여러 언어로 된 텍스트가 포함된 UTF-8 형식의 파일이 있습니다. 많은 사람들의 이름이 있습니다. 이를 ASCII로 변환해야 하며 결과가 최대한 적절해 보이도록 해야 합니다.
더 넓은 인코딩을 더 좁은 인코딩으로 변환하는 방법에는 여러 가지가 있습니다. 가장 간단한 변환은 ASCII가 아닌 모든 문자를 "_"와 같은 일부 자리 표시자로 바꾸는 것입니다. 파일의 언어를 알고 있으면 로마자 표기와 같은 다른 가능성이 있습니다.
UTF-8에서 ASCII로 적절한(최선의 노력) 변환을 제공할 수 있는 Unix 도구나 프로그래밍 언어 라이브러리가 Unix에서 사용 가능합니까?
대부분의 텍스트는 유럽 라틴어로 되어 있습니다.
답변1
이는 다음과 같은 경우에 유용합니다.
iconv -f utf-8 -t ascii//TRANSLIT
echo ĥéĺłœ π | iconv -f utf-8 -t ascii//TRANSLIT
반품 helloe ?
. 변환 방법을 모르는 문자는 iconv
물음표로 대체됩니다.
iconv
POSIX이지만 모든 시스템에 이 옵션이 있는지는 모르겠습니다 TRANSLIT
. 그것은 Linux에서 저에게 효과적입니다. 또한 이 IGNORE
옵션은 대상 문자 세트에서 표현할 수 없는 문자를 자동으로 삭제합니다(참고자료 참조 man iconv_open
).
더 나쁜 것은 POSIX 호환 옵션을 사용하는 것입니다 tr
. 이 명령은 ASCII가 아닌 모든 코드 포인트를 물음표로 바꿉니다. UTF-8 텍스트를 한 번에 1바이트씩 읽습니다. "É"는 악센트 결합 또는 사전 구성 문자를 사용하여 인코딩되는지 여부에 따라 E?
대체 될 수 있습니다.?
echo café äëïöü | tr -d '\200-\277' | tr '\300-\377' '[?*]'
예제에서는 caf? ?????
미리 구성된 문자를 사용하여 반환합니다.
답변2
konwert utf8-ascii
변환표를 기반으로 최선의 변환을 수행합니다. 입력 언어에 대한 대략적인 아이디어가 있는 경우 언어별 필터를 사용하여 더 나은 결과를 제공할 수 있습니다.
konwert utf8-xmetodo
에스페란토를 x-metodo 표현으로 변환합니다.
konwert UTF8-tex
언어별 매개변수를 사용하여 발음 구별 부호의 TeX 표현을 만들려고 시도합니다.
konwert UTF8-ascii/de
"ä"는 단순히 "a" 대신 "ae"(독일 관습)로 음역됩니다.
konwert UTF8-ascii/rosyjski
러시아어를 음역하는 데에는 "영어와 유사한" 규칙 등이 아닌 폴란드어 규칙이 사용됩니다.
답변3
노력하다uni2ascii -B input.txt >output.txt
답변4
여러 언어로 된 [사람 이름]이 포함된 UTF-8 형식의 파일이 있습니다. [의미 있는 ASCII 형식으로 변환하고 싶습니다.]
다음 이름을 관련된 사람들이 반대하지 않는 일부 ASCII 문자열로 변환할 수 있기를 원하십니까?
- 우리는 다음과 같습니다.
- 오바드 광고 광고 광고 광고
이 작업을 수행할 수 있는 자동화된 도구가 있는지 의심됩니다. 사람의 이름에는 라틴어가 없을 수도 있고 라틴어가 많이 포함될 수도 있습니다. 소프트웨어는 문화적으로 허용되는 버전을 선택할 수 없습니다. 적어도 소프트웨어가 관련된 사람들의 문화를 이해하지 못한다면 그렇지 않습니다.
당신은 또한 볼 수 있습니다https://stackoverflow.com/a/1398403/477035