У меня есть массив, который содержит символы японского и ascii.
Я пытаюсь определить, являются ли прочитанные символы английскими или японскими.
чтобы решить это, я следовал как
Алгоритм выше работает нормально, но не работает в случае полуширины в японском языке, например, シ, ァ и т. д., так как это только один байт.
Как я могу узнать, являются ли символы японскими или английскими?
** Примечание: ** Что я пытался
Я прочитал из Интернета, что первый байт скажет, японский он или нет, о котором я рассказал в шаге 1 моего алгоритма. Но это не будет работать для половины ширины.
РЕДАКТИРОВАТЬ:
Проблема, которую я решал, включает в себя управляющие символы 0X80 в начале и конце моих символов, чтобы идентифицировать последовательность символов.
Я написал следующее, чтобы определить конец контрольного символа.
cntlchar ….. (мои персонажи могут быть японцами) ….. cntlchar
if ((buf[*p+1] & 0X80) && (mbMBCS_charWidth(&buf[*p]) == 1))
// end of control characters reached
else
// *p++
это работало хорошо, когда для английского языка, но не работало для японской полуширины.
Как я могу справиться с этим?
Ваши данные должны использовать Кодовая страница Windows 932. Это Угадай, но изучение кодовых точек показывает, что вы описываете.
Кодовая страница показывает, что символы в диапазоне 00
в 7F
«английский» (лучше описание «7-битный ASCII»), символы в диапазонах 81
в 9F
а также E0
в FF
являются первым байтом многобайтового кода, и все между A1
а также DF
являются полуширинными символами Кана.
Для отдельных байтов это практически невозможно или невозможно. Для больших наборов данных вы можете выполнить статистический анализ байтов и посмотреть, соответствуют ли они известным английским или японским шаблонам. Например, гласные очень распространены в английском тексте, но разные японские буквы будут иметь одинаковую частоту.
Вещи становятся более сложными, чем тестирование битов, если ваши данные содержат акцентированные символы.
Если вы имеете дело с данными Shift-JIS и зашифрованным текстом Windows-1252, в идеале вы просто переназначаете его в UTF-8. Не существует стандартного способа определения кодировки текста в текстовом файле, хотя такие вещи, как MIME, могут помочь, если они будут добавлены извне в качестве метаданных.