glib :: ustring을 사용하여 일본어로 문자 너비 문제가 있습니다.일본어 반역/전각 변환
나는이 문자열을 가지고 : ウ ェ ッ ジ パ ン プ ス
내가로 변환 할: ウ エ ッ シ パ ン プ ス
ustring :: 정상화를 사용하여, 나는이 문자열을 얻을 : ウ ェ ッ ジ パ ン プ ス (사실, 여기에 각 문자 액센트는 두 자로 채 웁니다.)
이런 종류의 처리를 수행하는 표준 방법이 있습니까? ICU는 이것을 더 잘합니까?
절반 너비의 문자열이 전체 너비가 다른 문자열이기 때문에 일본어 문자열을 두 가지 형식 중 하나로 변환해야합니다. 반/전체 폭 히라가나/가타카나
AnsiString text = "変換する文字列"; //input text
//変換方法 how to convert
DWORD flags = LCMAP_FULLWIDTH; //全角文字にします。flag to convert to full width
//DWORD flags = LCMAP_HALFWIDTH; //半角文字にします)。to half width
//DWORD flags = LCMAP_HIRAGANA; //ひらがなにします。to hiragana
//DWORD flags = LCMAP_KATAKANA; //カタカナにします。to katakana
const int size = text.Length() * 2 + 1;
char* s = new char[size];
try
{
ZeroMemory(s, size);
LCMapString(GetUserDefaultLCID(),
flags,
text.c_str(),
text.Length() + 1,
s,
size);
AnsiString newtext = s; //変換した文字列 converted text
return newtext;
}
이 심판 사이의 변환을 할 수있는 LCMapString있다
아니라 입심 전문가,하지만 난 정규화를 제어하는 매개 변수가 ustring :: normalize()에 있음을 확인했습니다. – Dummy00001
예, 이미 사용하고 있지만 원하는 결과가 없습니다. ICU가 훌륭하다고 생각하지만 ICU를 통합하려면 모든 코드를 변경해야합니다. –
sye042 : 왜 모든 코드를 변경해야합니까? ICU의 Fullwidth-Halfwidth transliterator를 C++이나 C에서 호출 할 수 있습니다. 우분투를 사용 중이라면 ICU가 이미 플랫폼 용으로 패키지되어 있지 않은 것입니까? –