65.9K
CodeProject 正在变化。 阅读更多。
Home

编码带重音的字符

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.77/5 (12投票s)

2007 年 5 月 22 日

CPOL
viewsIcon

104811

在纯文本文件中导出带重音字符存在问题。你需要编码,但是哪种编码?

引言

在文本文件中导出带重音字符存在问题。有些程序无法导入或正确显示带重音的字符。因此,你需要使用编码来正确导出纯文本文件。但是,有很多编码,应该使用哪一种?

解决方法

答案是:iso-8859-8

这是希伯来语 (ISO-Visual) 编码。该编码在 .NET 中原生支持。它可以智能地转换为可视格式。其他标准编码器不会这样做,如下所示。

示例

转换以下内容:Frédéric François。

编码 描述 输出
ASCII Fr?d?ric Fran?ois
默认值 Frédéric François
UTF7 Unicode (UTF-7) Fr+AOk-d+AOk-ric Fran+AOc-ois
UTF8 Unicode(UTF-8) Frédéric François
iso-8859-1 西欧 (ISO) Frédéric François
iso-8859-8 希伯来语 (ISO-Visual) Frederic Francois
us-ascii US-ASCII Fr?d?ric Fran?ois
Windows-1252 西欧 (Windows) Frédéric François

使用编码的示例代码

StreamWriter sw = new StreamWriter
    ("somefile.txt", false, System.Text.Encoding.GetEncoding("iso-8859-8"));

为初学者提供的完整示例

using (StreamWriter sw = new StreamWriter
    ("somefile.txt", false, System.Text.Encoding.GetEncoding("iso-8859-8")))
{
    DataSet1TableAdapters.binsTA ta = new DataSet1TableAdapters.binsTA();
    DataSet1.binsDataTable dt = ta.GetData();
    foreach (DataSet1.binsRow row in dt.Rows)
    {
        sw.Write(row.ID.ToString());
        sw.Write("|");
        sw.WriteLine(row.description);
    }
}

历史

  • 2007年5月22日:初始发布
© . All rights reserved.