2013-10-14 3 views
0

올바르게 아랍어 이름을 사용하여 db에 저장된 파일을 업로드했지만 아랍어로 명명 된 파일을 업로드하려고했지만 파일이없는 대상 폴더에 업로드했습니다. 올바른 이름으로 저장되었습니다 ... 그래서 여기에 문제가 있습니까?yii ... 인코딩 문제 아랍어 파일 업로드

+1

어떤 플랫폼입니까? Windows의 경우 포기하십시오. 또한 일반적으로 사용자 입력을 파일 시스템 이름을 작성하기위한 기초로 사용하지 않아야합니다. – bobince

+0

예 창. – Mohammad

답변

1

네의 창

PHP, 그리고 기계의 기본 코드 페이지를 벗어나는 문자와 윈도우 파일 이름을 처리 할 수없는, 표준 입출력 파일 처리의 MS C 런타임의 구현을 사용하는 다른 응용 프로그램. 서버가 아랍어로 설정된 경우 아랍어를 업로드 할 수 있지만 중국어 또는 라틴 액센트는 업로드 할 수 없습니다. 이론적으로 프로세스의 코드 페이지를 UTF-8 (65001)로 설정할 수 있지만 C 런타임에는 심각한 버그가있어 사용하기가 어려울 수 있습니다.

유니 코드 파일 이름 지원을 원한다면 표준 파일 IO에 의존하지 말고 Win32 W API를 직접 호출해야합니다. 표준 언어는 .NET 언어 및 Python을 기본적으로 지원하지 않는 한 많은 작업입니다 PHP는 그렇지 않습니다).

사용자가 서버 측 파일 시스템 저장 장치에 사용할 파일 이름을 지정할 수 있도록 허용하는 것은 위험하며 특히 Windows 환경에서는 제대로 작동하지 않습니다. 일반적으로 대체 파일 이름 (예 : 123.dat)을 사용하는 것이 좋습니다. 여기서 123은 데이터베이스 행 ID 일 수 있습니다. 또한 유니 코드 문제가 사라집니다. (재 작성을 사용하면 직접적으로 제공하려는 경우 외부에서 더 친숙한 이름을 사용할 수 있습니다 .IRI 인코딩을 통해 URL에 유니 코드 문자가 쉽게 포함될 수 있습니다.)