1

我有一个客户要求我们编写 ac# 应用程序,该应用程序从他们的数据库中获取数据并将其输出到 .csv 文件。到目前为止,一切都很好。

该数据库包含一些 unicode 字符,当客户端使用 Excel 打开 .csv 时,这些字符看起来“奇怪”。例如:x0096 看起来像一个 A,上面有一个胡萝卜,旁边是欧元货币符号,而客户认为它应该看起来像一个 Dash。

所以我被要求让这些角色看起来“不奇怪”。

我为每个奇怪的字符编写了代码(我喜欢下面的 12 行)。

input = input.Replace((char)weirdCharacter, (char)normalCharacter);

必须有更好的方法。

4

2 回答 2

1

我在生成 HTML 文件时遇到了同样的问题。我的解决方案是更改输出文件的编码。

StreamWriter swHTMLPage = 
                new System.IO.StreamWriter(OutputFileName, false, Encoding.UTF8);

一旦我添加了 Encoding.UTF8 参数,字符就会开始正确显示。我不知道这是否可以应用于您的解决方案,因为涉及 Excel,但我敢打赌它可以。

于 2013-01-23T14:45:18.247 回答
0

正如文森特詹姆斯所说,如果这是一个编码问题,那么解决这个问题的理想方法是在解码/编码值时使用正确的编码,但如果这仍然不起作用......

我认为这很简单。你怎么看?:

Dictionary<char, char> substitutions = new Dictionary<char, char> {
  {'\0x0096', 'F'}, {'\0x0101', 'O'}, {'\0x0121', 'O'}, ...
};

foreach(KeyValuePair<char, char> pair in substitutions)
{
   input.Replace(pair.Key, pair.Value);
}
于 2013-01-23T14:48:35.747 回答