【问题标题】:Correctly encoding of string [duplicate]正确编码字符串[重复]
【发布时间】:2016-09-30 10:17:39
【问题描述】:

我需要正确编码字符串:

string Nazev="TriŔko Chevak";

我需要这个:

string Nazev="Tričko Chevak";

我试试这个,但没有改变:

Encoding win = Encoding.GetEncoding(1250);
Encoding z = Encoding.Default;
byte[] zBytes = z.GetBytes(Nazev);
byte[] isoBytes = Encoding.Convert(z, win, zBytes);
Nazev = win.GetString(isoBytes);

你有什么想法吗?

我打开 *.DBF 文件并将值加载到数据表:

string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path.GetDirectoryName(NovyNazevCSV) + ";Extended Properties=\"dBASE IV;Text;CharacterSet=1250;\"";
            using (OleDbConnection con = new OleDbConnection(constr))
            {
                var sql = "select * from " + Path.GetFileName(NovyNazevCSV);
                OleDbCommand cmd = new OleDbCommand(sql, con);
                con.Open();
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                da.Fill(dtBush);
            }
foreach (DataRow radekBush in dtBush.Rows) 
{
Nazev = radekBush[3].ToString();
}

在文件中我有: Tričko 但在数据表中我有 TriŔko...

【问题讨论】:

  • 你想在这里实现什么?有错误信息吗?如果是这样,请将其包含在您的问题中。
  • 对于不习惯这种本地化的人,您能解释一下为什么您会期望这种转​​换吗?我个人从未见过 Ŕ 与 č 的意思相同。
  • 为什么您认为该字符串未正确编码? .NET 使用支持这些字符的 UTF-16。
  • 我编辑了第一篇文章...
  • 字节和字符串之间的编码和解码转换(编码是字符串到字节,解码是字节到字符串)。您已经将它作为字符串保存的事实表明它已经被解码。根据选择的编码,解码可能是一个有损过程。您应该返回生成原始文本的任何内容,并确保它输出正确的字节,而不是在将其作为字符串时尝试修复它。

标签: c# encoding


【解决方案1】:

Encoding.Default 将返回默认的 ANSI 编码,请尝试使用 UTF-8 编码代替:

...
Encoding z = Encoding.UTF8;
...

您也可以尝试在连接字符串中使用CharacterSet=65001

【讨论】:

  • 我试试这个,但还是一样:/
猜你喜欢
  • 2016-07-13
  • 2015-03-10
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多