首先,我不是Oracle用户专家,所以我有一些问题需要解决:D.我们的应用程序是一个带有Nhibernate db连接的MVC应用程序。问题在于当我们试图将像‘Ѽó’这样的字符保存到一个Ѽ字段中时,它们会被保存为一个问号'?‘。为了解决这个问题,我们在数据库中换了一个不同的字符集。
以下是我们在安装时的nls_database_parameters:
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET EE8ISO8859P2
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.4.0 原始的NLS_CHARSET是EE8ISO8859P2,我们将其更改为: AL32UTF8 (工作非常完美)。问题是,NLS_NCHAR_CHARACTERSET不适合处理像nvarchar2这样的字段的特殊字符吗?如果没有,那么谁能给我解释一下它的咕噜声?
编辑: NLS_LANG设置为: POLISH_POLAND.AL32UTF8
发布于 2014-10-17 13:08:32
在早期,即在Unicode可用之前,使用了国家字符集。其主要思想是在存储语言独立项的地方设置通用字符集(包括任何源代码等)。对于VARCHAR2/CHAR,并有一个特定于客户的,即特定于语言的NVARCHAR2/NCHAR国家字符集.
在我看来,现在没有理由使用它,因为AL32UTF8 (或任何其他Unicode编码)无论如何都可以存储任何字符。
也许,当你用非西方语言工作时,像AL16UTF16或AL32UTF32这样的民族字符在存储和效率方面略显有益。
关于您的问题:全国字符集AL16UTF16能够存储任何Unicode字符,因此您的波兰字符应该没有问题。但是,您的客户端应用程序(或所选字体)可能无法显示这些字符。
https://stackoverflow.com/questions/26422688
复制相似问题