이 질문은 색인에 로컬 이름을 저장하기위한 국제 문자의 정규화를 참조합니다. 나는이 문제에 대해 전반적으로 논의하고 싶다. 또한 Java의 가능한 기존 솔루션 (클래스/라이브러리)에 대해서도 듣고 싶다.인덱싱을 위해 유니 코드 문자열을 준비하는 방법은 무엇입니까?
전역 응용 프로그램에서 사용자는 이름을 입력하고 응용 프로그램은 각 이름을 검색 색인에 기록하여 다른 사용자가 이름을 검색하고 사용자를 찾을 수 있습니다. 영어로는 사소하지만 다른 언어 및/또는 세계적인 규모에서는 그리 쉽지는 않습니다. 특정 문자를 음역으로 번역해야하거나 여러 가지 형식으로 작성해야하기 때문입니다. 예를 들어, 독일의 이름 하우 슬러는
- 하우 슬러 (독일)
- Haeussler (독일, 국제 음역)
- 하우 슬러 (스위스)
- Hausler (영어 음역)
자바는
Normalizer.normalize(entry, Normalizer.Form.NFD) // NFC
클래스이지만이 방법은 많은 경우에 작동하지 않는 것 같거나 제대로 사용하는 방법을 알지 못합니다. 좋은 읽을 거리도 여기에 http://en.wikipedia.org/wiki/Unicode_equivalence이지만이 주제에 대한 충분한 번들 정보를 찾을 수 없습니다.
누가 이미 그 문제에 대해 연구 해왔 던 기존의 오픈 소스 프로젝트를 아는 사람이 있습니까? 사용할 수있는 라이브러리는 무엇입니까? 웹 사이트?
일본어, 중국어, 아랍어 등 어떻게 당신의 언어를 영어로 번역합니까? Facebook과 같은 대규모 소셜 네트워크는 어떻게 사용자 이름을 음역하여 국제적으로 볼 수 있는지 확인합니다.
아주 흥미로운 질문 ... 목표가 액센트를 제거하는 것이었던 (즉, 정규화기를 사용하여 분해 한 후 정규식을 사용하는) SO 문제에 대한 정규화 항목을 연구 한 것을 기억합니다. 그러나 국제적으로는 유니 코드조차도이 법안에 맞지 않는다고 생각합니다. 이것이 존재하는지는 모르겠지만, 텍스트를 [IPA]로 "번역"하는 라이브러리 일 수도 있습니다. (http://en.wikipedia.org/wiki/IPA)? – fge
또한 제목의 "유니 코드 문자열"은 일종의 중복입니다. 자바는 'char'이 실제로 UTF-16 코드 단위 임에도 불구하고 Unicode를 사용합니다 (이는 BMP 외부의 코드 포인트가 두 개의'char's를 필요로하는 이유입니다.이 이유는 자바가 태어 났을 때 , 유니 코드는 현재 BMP라고 알려진 것을 정의했다.) – fge