代码之家  ›  专栏  ›  技术社区  ›  DraÅ¡ko

如何将Windows-1250编码的字符串转换为Unicode?

  •  4
  • DraÅ¡ko  · 技术社区  · 16 年前

    我正在从Windows-1250代码页中的某些dll(它是某些外部数据源的包装)字符串接收数据,我希望将它们正确地(以Unicode形式)插入到SQL Server数据库的表中。由于数据库中应该保存该数据的特定行是nvarchar类型,所以我只需要在C代码中将其转换为Unicode并将其作为参数传递。一切都很好很好,但我在转换步骤上遇到了困难。

    我尝试了以下方法,但不起作用:

    private static String getUnicodeValue(string string2Encode) //
    {
        Encoding srcEncoding = Encoding.GetEncoding("Windows-1250");
        UnicodeEncoding dstEncoding = new UnicodeEncoding();
        byte[] srcBytes =  srcEncoding.GetBytes(string2Encode);
        byte[] dstBytes = dstEncoding.GetBytes(string2Encode);
        return dstEncoding.GetString(dstBytes);
    }
    

    当我把这个返回的字符串插入到表中时,我没有得到像_、_、_、_、_、_这样的正确字母。

    求求你了,救命!:)

    1 回复  |  直到 8 年前
        1
  •  12
  •   Andrey    16 年前

    问题是 string string2Encode 已经是Unicode格式。(UTF-16是.NET中的内部编码)因此,如果要在Windows-1250中使用字符串,则必须通过 byte[] 然后做 Encoding.GetEncoding("windows-1250").GetString()