转换unicode字符与c#

我有一个客户要求我们编写一个从他们的数据库获取数据并将其输出到.csv文件的ac#应用程序。 到现在为止还挺好。

这个数据库包含一些unicode字符,当客户端用Excel打开.csv时,这些字符看起来很“怪异”。 例如:当客户认为它应该看起来像破折号时,x0096看起来像一个在欧元货币符旁边的胡萝卜。

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

我已经写了每个奇怪的字符(我有像下面的12行)的代码。

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

有一个更好的方法。

当我生成HTML文件时,我遇到了同样的问题。 我的解决scheme是改变我的输出文件的编码。

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

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

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

我觉得这很简单。 你怎么看?:

 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); }