Если вам приходится иметь дело с японским и европейским языками, тогда AL32UTF8
(т. Е. UTF-8) - фактически единственная полезная опция.
В связанной статье есть некоторые недостатки, например " ... в операционной системе Windows, поэтому вам не следует устанавливать AL32UTF8 в качестве клиентского набора символов в параметре NLS_LANG, поскольку в нем нет клиентов UTF-8 WIN32 ."Это неправильно, в настоящее время почти каждый клиент Windows поддерживает UTF-8. Каждый текстовый редактор, который вы используете для записи файлов *sql
, поддерживает UTF-8, когда вы используете простой sql * Plus, тогда простая команда chcp 65001
делает его UTF-8. Только устаревшие и устаревшие драйверы от Microsoft не поддерживают Unicode.
Обратите внимание: когда вы устанавливаете, например, значение NLS_LANG=.AL32UTF8
, вы говорите базе данных Oracle: «В моем клиентском приложении используется набор символов AL32UTF8 (a.k.a. UTF-8)» - не больше, не меньше.
Это не означает автоматически, что ваше клиентское приложение действительно использует UTF-8, часто вам приходится явно указывать его в некоторых настройках (однако есть приложения и драйверы, которые автоматически следуют значению NLS_LANG
).
См. OdbcConnection, возвращающий китайские иероглифы как "?" для получения дополнительной информации.