繁体   English   中英

使用C#转换Unicode字符

[英]Convert unicode characters with c#

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

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

因此,我被要求使这些字符看起来“不奇怪”。

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

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

必须有更好的方法。

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

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

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

正如文森特·詹姆斯(Vincent James)所说的那样,如果这是一个编码问题,那么解决此问题的理想方法是在对值进行解码/编码时仅使用正确的编码,但是如果这样做仍然不起作用...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM