Китайские иероглифы превращаются в ненужные символы - Progress4gL - Open edge
Язык программы - open Edge, progress4GL
Если вам нужна помощь, то при чтении китайских символов из файла XML они преобразуются в ненужные символы.
Файл XML имеет кодировку UTF-8.
Сессия, которую мы загружаем, имеет кодовую страницу = "ISO8859-1"
Уже пытались использовать переменную MEMPTR, но безуспешно, кто-нибудь может посоветовать, что можно сделать, чтобы решить эту проблему?
INPUT FROM value (cFileName) BINARY NO-MAP no-convert.
IMPORT unformatted mPointer.
INPUT CLOSE.
SET-SIZE(mPointer) = mPointerSize.
CREATE X-DOCUMENT hXML .
hXML:ENCODING = "UTF-8".
CREATE X-NODEREF hRoot.
hXML:LOAD("memptr",mPointer,FALSE) NO-ERROR.
1 ответ
iso8859-1 не может отображать китайские иероглифы. Вам необходимо сопоставить кодовую страницу сеанса с данными, которые вы читаете. Очевидным решением будет начать сеанс с соответствующими параметрами -cp*, установленными в utf8. ОДНАКО - очень важно убедиться, что это совместимо с тем, что ваша база данных использует для кодовых страниц (-cpinternal), если вы используете несовместимые кодовые страницы для хранения данных, которые вы собираетесь испортить БД. Мусор, мусор из...
Следующая статья - разумное начало:
https://knowledgebase.progress.com/articles/Article/P762
Поэтому первое, что вам нужно сделать, это выяснить, с какой кодовой страницей работает ваша БД.
Вы можете надежно обнаружить это независимо от платформы, взглянув на dbname.lg и выполнив поиск "-cpinternal" или "(4264)".
Но будьте очень осторожны - как я упоминал выше, если вы форсируете несовместимое преобразование, вы рискуете испортить вашу базу данных. Если БД не была создана с поддержкой utf8 (или другой кодовой страницы, совместимой с китайскими символами), вы должны сначала решить эту проблему.