UTF-8 파일을 ASCII로 변환 (최선의 노력) 많은 사람들의 이름입니다. ASCII로

여러 언어로 된 텍스트를 포함하는 UTF-8 파일이 있습니다. 그것은 많은 사람들의 이름입니다. ASCII로 변환해야하고 가능한 한 괜찮은 결과가 필요합니다.

더 넓은 인코딩에서 더 좁은 인코딩으로 변환하는 방법에는 여러 가지가 있습니다. 가장 간단한 변형은 모든 비 ASCII 문자를 ‘_’와 같은 자리 표시 자로 바꾸는 것입니다. 파일이 작성된 언어를 알고 있다면 로마자 표기법과 같은 추가 가능성이 있습니다.

유닉스에서 사용 가능한 유닉스 도구 또는 프로그래밍 언어 라이브러리는 UTF-8에서 ASCII로 적절한 변환을 제공 할 수 있습니까?

대부분의 텍스트는 유럽, 라틴 유형 기반 언어로되어 있습니다.



답변

konwert utf8-ascii

변환 테이블에 따라 최선의 변환이 수행됩니다. 입력 언어를 대략 알고 있다면 더 나은 결과를 제공하는 언어 별 필터가 있습니다.

konwert utf8-xmetodo

에스페란토를 x-metodo 표현으로 변환 한 것입니다.

konwert UTF8-tex

분음 부호를 TeX로 표현하려고 시도 할 때 언어 별 매개 변수가 있습니다.

konwert UTF8-ascii/de

평범한 “a”대신 “ä”를 “ae”(독일어 관습)로 음역합니다.

konwert UTF8-ascii/rosyjski

영어와 유사한 규칙 대신 러시아어 음역에 폴란드어 규칙을 사용합니다.


답변

이것은 몇 가지 일에 효과적입니다.

iconv -f utf-8 -t ascii//TRANSLIT

echo ĥéĺłœ π | iconv -f utf-8 -t ascii//TRANSLIT을 반환합니다 helloe ?. iconv변환 방법을 모르는 문자는 물음표로 바뀝니다.

iconvPOSIX이지만 모든 시스템에 TRANSLIT옵션 이 있는지 모르겠습니다 . Linux에서 작동합니다. 또한이 IGNORE옵션은 대상 문자 세트에 표시 할 수없는 문자를 자동으로 버립니다 (참조 man iconv_open).

열등하지만 POSIX 호환 옵션은을 사용하는 것 tr입니다. 이 명령은 모든 비 ASCII 코드 포인트를 물음표로 바꿉니다. 한 번에 한 바이트 씩 UTF-8 텍스트를 읽습니다. “É” 는 결합 악센트 또는 사전 작성된 문자를 사용하여 인코딩되었는지에 따라 E?또는 로 대체 될 수 있습니다 ?.

echo café äëïöü | tr -d '\200-\277' | tr '\300-\377' '[?*]'

이 예제는 caf? ?????미리 작성된 문자를 사용하여을 반환 합니다.


답변

시험 uni2ascii -B input.txt >output.txt

uni2ascii


답변

UTF-8 형식의 파일에 여러 언어로 된 [사람의 이름]이 포함되어 있습니다 [ASCII에서 의미있는 것으로 변환하고 싶습니다].

다음 이름을 관계자가 반대하지 않는 ASCII 문자열로 변환 할 수 있기를 원하십니까?

  • ஸ்றீனிவாஸ ராமானுஜன் ஐயங்கார்
  • عبد الله الثاني بن الحسين

이 작업을 수행 할 수있는 자동화 된 도구가없는 것 같습니다. 개인 이름의 라틴어가 없거나 매우 많을 수 있습니다. 소프트웨어는 문화적으로 허용되는 버전을 선택할 수 없습니다. 적어도 관련된 사람의 문화에 대해 많은 것을 알고있는 소프트웨어가 없으면 아닙니다.

참조 /programming//a/1398403/477035


답변

이를 위해 Text :: Unidecode 와 함께 Perl을 사용 했습니다. 예:

perl -e 'use utf8; use Text::Unidecode; print unidecode("عبد الله الثاني بسين")

bd llh lthny bn lHsyn내 목적에 맞는 결과입니다.