服务器端:

数据库字符集:ZHS16GBK

数据库国家字符集:AL16UTF16

客户端:

NLS_LANG:AL32UTF8

环境变量:ORA_NCHAR_LITERAL_REPLACE =TRUE

 

这样的字符集设置,改变了客户端NLS_LANG与环境变量。如果不改变任何默认设置,比如客户端NLS_LANG仍然是ZHS16GBK,也不要什么环境变量设置,那可以实现多国文字的正确存储吗?如果你使用VB.NET开发,试试下面的代码: 

………………

Dim conn As New System.Data.OracleClient.OracleConnection("database conn string")

Dim cmd As New System.Data.OracleClient.OracleCommand("insert Into mer_categ(S_merc_name ) Values(:S_merc_name)", conn)

cmd.Parameters.Add("S_merc_name", OracleClient.OracleType.NVarChar).Value = "삼성"                    conn.Open()

cmd.ExecuteNonQuery()

conn.Close()

 

……………

运行结果一定让你满意。为什么通过设置command参数的形式就可以直接正确地写到数据库中,后台的处理机制还是不得而知,但我的猜测是将字符用数据库国家字符集的Unicode编码直接传到Oracle Server,而不需经过字符集的任何转换。

相关文章:

  • 2022-12-23
  • 2021-12-09
  • 2021-11-21
  • 2021-08-26
  • 2022-01-04
猜你喜欢
  • 2022-12-23
  • 2021-12-23
  • 2021-07-17
  • 2021-05-20
  • 2021-09-07
  • 2021-11-01
相关资源
相似解决方案