2012-05-24 2 views
1

file_exists ("file_å.txt");PHP의 file_exists와 Ø Æ과 같은 특수 문자

반환 거짓를 파일이있다. 이런 종류의 파일을보기 위해 * file_exists *를 만들 수 있습니까?

감사합니다. 당신의 PHP 스크립트를 인코딩

+2

가능한 중복이 필요한 일 조회해야하므로 http://stackoverflow.com/questions/2685718/special-characters-in-file-exists-problem-php) – Treffynnon

+0

또한 https://bugs.php.net/bug.php?id=46990 – Treffynnon

+0

이 중복되지 않음을 참조하십시오. 그 주제는 윈도우 기반 박스와 관련이있다. 그러나 링크에 감사드립니다! –

답변

1

점검에 있습니다. 아마 그것은 파일 시스템에서 다릅니다. (예 : 라틴 대 UTF-8)

+0

네, 파일은 UTF-8입니다. 내 호이스트의 파일 시스템이 어떤 인코딩인지 확인하는 방법을 모릅니다. 계속 업데이트 될 것입니다. 그리고 팁에 감사드립니다. –

+1

php 파일이 UTF8로되어 있습니까? (file_a.txt 파일이 아님) – periklis

+0

iconv ('UTF-8', 'ISO-8859-1', 'file_å.txt')는 브라우저에서 적절한 파일 이름을 제공하지만 여전히 * file_eixsts *가 존재하는지 확인할 수 없습니다 . –

2

텍스트를 가정 file_exists(mb_convert_encoding("file_å.txt", "UTF-8"));

이 UTF-8

+0

감사합니다. 작동하지 않았습니다. –

+0

나를 위해 일했다 : D – DaMouse404

2

확인이 답변하지 않습니다 시도 : https://stackoverflow.com/a/2685818/190791

나를 위해이 솔루션은

했다 윈도우 파일 형식으로 변환 :

$winfilename= iconv('utf-8', 'cp1252', $utffilename); 
+0

이것은 - 기호가있는 파일 이름에서 나를 위해 일했다. 감사! –

0

예를 들어 Excel에서 파일 이름을 읽고 디스크의 지정된 경로를 찾을 때 몇 번 실행했습니다. 문제는 "ä"가 특정 유니 코드 문자 (\ u00e4) 또는 "결합 된 디아 레 시스"형식 (\ u0308) 즉 두 점이있는 "a"일 수 있습니다.

가장 좋은 방법은 PHP 5.3부터 노멀 라이브러리를 사용하는 것입니다. 클래스를 PHP로 가져 오려면 sudo apt-get install php5-intl가 필요할 수 있습니다. 그 단지

$normalizer = new \Normalizer(); 
$normalizer->normalize($val, \Normalizer::FORM_D) 

는 두 번째 인수에 대한 몇 가지 다른 형태의 Theres는 후에 당신은 당신이 [ "file_exists"문제에서 (PHP)를 특수 문자 (의