oracle 10g多语言存储

服务器端:

数据库字符集: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,而不需经过字符集的任何转换。

posted on 2008-11-20 09:11  shengel  阅读(405)  评论(0编辑  收藏  举报