【问题标题】:asp.net converting iso-8859 file to utf-8asp.net 将 iso-8859 文件转换为 utf-8
【发布时间】:2009-04-22 13:10:55
【问题描述】:

我需要将 CSV 文件从 iso 转换为 UTF-8 以将重音符号保留在数据库中。

当我尝试将法语口音(é、è、ê 等)翻译成 UTF-8 时,它们不会被保留,它们被更改为“?”。

我被难住了。

我使用以下函数进行翻译:

public static string iso8859ToUnicode(string src) {

        Encoding iso = Encoding.GetEncoding("iso8859-1");

        Encoding unicode = Encoding.UTF8;        

        byte[] isoBytes = iso.GetBytes(src);

        byte[] unibytes = Encoding.Convert(iso,unicode,isoBytes);

        char[] unichars = new char[iso.GetCharCount(unibytes,0,unibytes.Length)];

        unicode.GetChars(unibytes,0,unibytes.Length,unichars,0);

        return new string(unichars);

    }

但似乎效果不佳。帮忙?

【问题讨论】:

    标签: asp.net file character-encoding


    【解决方案1】:

    我强烈怀疑您的原始字符串没有正确的值。我的猜测是您已经从文件中读取它,就好像它是 UTF-8 一样。

    要在两种编码之间进行转换,您首先不应该有字符串 - 您应该基本上加载文件的 bytes 并以这种方式调用 Encoding.Convert()。或者,使用 ISO-Latin-1 加载文件并将其保存为 UTF-8。例如:

    public static void ConvertLatin1ToUtf8(string inputFile, string outputFile)
    {
        Encoding latin1 = Encoding.GetEncoding(28591);
        string text = File.ReadAllText(inputFile, latin1);
        File.WriteAllText(outputFile, text, Encoding.UTF8);
    }
    

    public static void ConvertLatin1ToUtf8(string inputFile, string outputFile)
    {
        Encoding latin1 = Encoding.GetEncoding(28591);
        byte[] latinBytes = File.ReadAllBytes(inputFile);
        byte[] utf8Bytes = Encoding.Convert(latin1, Encoding.UTF8, latinBytes);
        File.WriteAllBytes(outputFile, utf8Bytes);
    }
    

    【讨论】:

    • 谢谢你一百万次半。我可以讨厌编码问题吗? :P
    • 只有当我更讨厌时区问题时:)
    【解决方案2】:

    当您声明新字符串或将数据存储在 char 数组中时,您可能会丢失编码

    【讨论】:

    • 我不应该以这种方式丢失编码,因为我正在将 iso 转换为字节,然后将字节转换为 utf-8...除非我有字节级自动字符转换不知道,应该不是问题。
    【解决方案3】:

    而不是GetChars()方法,你不能直接调用

    unicode.GetString(unibytes);
    

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 2012-08-07
      • 2014-08-29
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多