C# OracleCommand存储变音符号(äöü)丢失问题及编码设置咨询
解决Oracle存储变音符号乱码问题
你的问题核心是字符集不匹配导致Unicode字符(变音符号)丢失,OracleCommand本身无法直接指定编码,但可以通过以下几个关键步骤解决:
检查数据库字符集:确保数据库使用支持完整Unicode的字符集(如
AL32UTF8),而非单字节字符集(如WE8ISO8859P1)。可执行以下SQL查询确认:SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';修改连接字符串:在Oracle连接字符串中添加
Unicode=True(适用于ODP.NET驱动),强制以Unicode编码传输数据。示例连接字符串:Data Source=YourDBInstance;User Id=YourUser;Password=YourPass;Unicode=True;替换参数类型:将代码中
OracleDbType.Varchar2改为OracleDbType.NVarchar2,NVarchar2专门用于处理Unicode数据,可避免变音符号被截断。修改后的参数代码:cmd.Parameters.Add("i_PersNummer", OracleDbType.Varchar2).Value = _values[0]; cmd.Parameters.Add("i_Name", OracleDbType.NVarchar2).Value = _values[1]; cmd.Parameters.Add("i_Vorname", OracleDbType.NVarchar2).Value = _values[2]; cmd.Parameters.Add("i_Geburtsdatum", OracleDbType.Varchar2).Value = _values[3];同步存储过程参数类型:确保数据库中
CHARTA_MIGRATION存储过程对应的i_Name、i_Vorname参数类型为NVARCHAR2,而非VARCHAR2,保证参数接收端也支持Unicode。
以上步骤结合后,即可正确存储包含变音符号的字符数据。
内容的提问来源于stack exchange,提问作者Trafel
相关产品推荐
相关产品推荐

