【问题标题】:How to encode & decode non Ascii characters?如何编码和解码非 Ascii 字符?
【发布时间】:2012-09-16 14:31:34
【问题描述】:

我正在开发一个应用程序,我想在其中对西班牙语文本进行编码。 但问题是,它没有编码特殊字符,如 á, é, í, ó, ú, ü,Á, É, Í, Ó, Ú, Ü,Ñ,ñ . 我该怎么做?我想编码-解码西班牙语文本

【问题讨论】:

    标签: c# encoding decoding non-ascii-characters


    【解决方案1】:

    对于使用简单的UTF-8 编码为encode/decode 的国际支持,您的数据应该足够了。

    Utf-8 有一个漂亮的能力,可以用一个字节读取ASCII,就像普通的 ASCII 字符和 2 个字节的 Unicode 字符一样。所以它能够在必要时“缩小”。

    如需完整的C# 文档,请查看 UTF-8

    编辑

      Encoding enc = new UTF8Encoding(true, true);
      string value = " á, é, í, ó, ú, ü,Á, É, Í, Ó, Ú, Ü,Ñ,ñ "; 
      byte[] bytes= enc.GetBytes(value); //convert to BYTE array 
    
     //save in some file 
    
     //after can read  from the file like
     string decodedString = enc.GetString(byteArrayReadFromFile);
    

    【讨论】:

    • 我尝试了 utf-8 和 base64 但它无法编码非 ascii 字符
    • 我认为您没有以正确的方式使用它。可以提供一些代码吗?
    • //使用 utf-8 编码 public static string EncodeTo641(string toEncode) { byte[] toEncodeAsBytes= System.Text.UTF8Encoding.UTF8.GetBytes(toEncode);字符串返回值 = System.Convert.ToBase64String(toEncodeAsBytes);返回返回值; } //解码字符串 public static string DecodeFrom64(string encodedData) { byte[] encodedDataAsBytes= System.Convert.FromBase64String(encodedData);字符串 returnValue =System.Text.UTF8Encoding.UTF8.GetString(encodedDataAsBytes);返回返回值; }
    • @dd619:您必须使用该类中存在的操作方法才能正确写入/读取该格式的数据。声明这还不够。
    • @Tigren:当我通过“á, é, í, ó, ú, ü,Á, É, Í, Ó, Ú, Ü,Ñ,ñ” 作为编码时,它会给出 á é, Ã, ó, ú, ü,Ã, É, Ã, Ó, Ú, Ü,Ã',ñ 作为输出
    【解决方案2】:

    好的,我正在回答我自己的问题,希望对某人有所帮助;在给定的字符串中打印西班牙语或任何其他非 ascii 字符用它们的 unicode 转义字符集替换所有非 ascii 字符 例如用 \u00e1 替换 á 然后简单地打印字符串。

    string str="árgrgrgrááhhttá";
    str=str.Replace("á", "\u00e1");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      相关资源
      最近更新 更多