我试图替换从Excel电子表格中检索到的字符串中的一些不良字符。原因是我们的Oracle数据库使用WE8ISO8859P1字符集,该字符集未定义文本中Excel“贴心”插入的几个字符(弯引号、em和en破折号等)。由于我无法控制数据库或Excel电子表格的创建方式,因此需要用其他内容替换这些字符。
我这样将单元格内容检索到一个字符串中:
string s = xlRange.get_Range("A1", Missing.Value).Value2.ToString().Trim();
在Visual Studio的文本可视化器中查看字符串,可以看到完整且正确地检索到了文本。接下来,我尝试替换其中一个不良字符(在这种情况下是右花括号引号符号):
s = Regex.Replace(s, "\u0094", "\u0022");
但它并没有起到任何作用(文本可视化器显示它仍然存在)。为了尝试验证我想要替换的字符是否实际存在于其中,我尝试了:
bool a = s.Contains("\u0094");
但它返回false。然而:
bool b = s.Contains("”");
返回真。
我对.NET中的字符串有一些了解,它们是使用UTF-16编码的,而Excel可能会使用ANSI。那么这是否意味着我需要更改从Excel导出的文本的编码方式?或者我在这里做错了什么?任何建议都将不胜感激。我已经阅读并反复阅读了所有关于Unicode和编码的文章,但仍然一无所知。