2014-10-15 6 views
0

PHP 또는 SHELL을 사용하여 Ubuntu에서 UTF-8을 CP1252로 변환하는 것에 관한 질문이 있습니다.우분투에서 UTF-8을 PHP 또는 bash 쉘로 변환

배경 : PHP 또는 SHELL을 사용하여 Ubuntu에서 UTF-8에서 CP1252로 csv 파일을 변환하고, 우분투에서 Windows로 파일을 복사하고, nodepad ++로 파일을 엽니 다.

환경 :

  • 우분투 10.04
  • PHP 5.3
  • 문자로 파일 CSV (œ, A, C)

방법을 사용 :

  1. PHP 사용
    iconv("UTF-8", "CP1252", "content of file")
    또는 내가 뭔가를 표시
    file -i name_of_the_file
    에 생성 된 파일을 선택하면
    mb_convert_encoding("content of file", "UTF-8", "CP1252")
    : 우측 하단에,
    name_of_the_file: text/plain; charset=iso-8859-1
    나는 이것이 ++ 창에 파일을 변환하고 메모장을 열 복사를, 우리 인코딩이 ANSI
    인 것을 볼 수 있습니다. ANSI에서 Windows-1252로 인코딩을 변경하면 특수 문자가 잘 표시됩니다.


  2. iconv -f UTF-8 -t CP1252" "content of file"
    으로 나머지는 동일합니다.

질문 : 1. 왜 명령 파일을 직접 CP1252 또는 ANSI하지만이 ISO-8895-1을 표시하지 않았다? 2. ANSI에서 Windows-1252로 인코딩을 변경했을 때 특수 문자가 잘 표시되는 이유는 무엇입니까?

미리 감사드립니다.

답변

0

1.

CP1252 및 ISO-8859-1은 매우 유사 꽤 자주 파일이 두 번째로 인코딩 된 파일과 동일하게 보일 것 중 하나로 인코딩됩니다. 어떤 문자가 Windows-1252에 있고 ISO-8859-1에는 없는지 보려면 Wikipedia을 참조하십시오.

글자 àç은 두 인코딩에서 모두 동일하게 인코딩됩니다. ISO-8859-1에는 œ 및 CP1252가 없지만 file은이를 놓쳤을 수 있습니다. AFAIK는 전체 파일을 분석하지 않습니다.

2.

은 "ANSI"는 Windows에서 기본 유니 코드 인코딩에 사용되는 잘못된 이름입니다. 서유럽 언어의 경우 ANSI는 Windows-1252를 의미합니다. 중부 유럽의 경우 Windows-1250, 러시아어 인 경우 Windows-1251 등이 있습니다. Windows와 별개로 "ANSI"라는 용어는 인코딩을 나타냅니다.