2009-09-02 3 views
0

나는 MySQL 테이블에서 텍스트 값을 가져 와서 텍스트 파일에 쓰는 Perl 스크립트를 가지고있다. 문제는 텍스트 파일을 열어 볼 때 \x92\x93과 같은 16 진수 문자가 많이 나옵니다. 이는 큰 따옴표와 큰 따옴표를 의미합니다.문자로 xNN을 Perl로 대체합니까?

텍스트 파일에 값을 쓰기 전에 특수 문자를 이스케이프 처리하기 위해 DBI->quote 함수를 사용하고 있습니다. Encode :: Encoder를 사용해 보았지만 행운이 없었습니다. 두 테이블의 문자 집합은 latin1입니다.

어떻게 그 16 진수 문자를 없애고 문자를 텍스트 파일에 표시합니까?

답변

5

ISO Latin-1은 0x80에서 0x9f 범위의 문자를 정의하지 않으므로이 바이트를 16 진수로 표시해야합니다. 대부분의 경우 데이터는 실제로 Windows-1252으로 인코딩되며,이 범위에서 추가 문자 (왼쪽/오른쪽 따옴표 포함)를 정의한다는 점을 제외하면 Latin1과 동일합니다.

1

\ x92 및 \ x93은 latin1 문자 집합에서 공백 문자입니다 (here 또는 here 참조). 특정 인 경우 latin1을 다루는 것으로 간단히 삭제할 수 있습니다.

0

테이블의 문자 집합을 변경하거나 비 라틴 -1 문자를 라틴어 -1 문자로 변환해야하는 것처럼 들립니다. 나는 첫번째 해결책을 선호 할 것이다. 유니 코드 익숙해지기. 당신은 어느 시점에서 그것을 배워야 할 것입니다. :)