我正在做一个需要大量日文片假名、平假名和汉字字符的项目。原始文件是使用“MS Pゴシック”字体的excel文件。我遇到的问题似乎与此类问题和 c# 中的其他所有人相同。我找到的解决方案似乎都是从在 c# 程序中添加文本开始的。我想要做的是读取我制作成 c# 的 .xls 或 .txt 文件之一,使用普通 c# 函数(如字符串比较)处理数据。但是,当我这样做时,会发生注意。写入或显示数据会产生“?” 分数。这里没有什么新鲜事。
我用 c++ 尝试了同样的想法,并且效果很好。
问题是它必须是 c#,而不是 c++,才能与我正在使用的其他软件的互操作一起工作。
长话短说,与 c++(c 字符串)相比,c#(system.string)不能原生处理 unicode 吗?
我正在使用 Visual Studio C++ 2008 Express 和 Visual Studio C# 2010 Express。文件是相同的,但它适用于 c++ 而不是 c#。
抱歉,我好久没用英语了。我尝试了各种类型,以下是最新的但仍然是“?” 输出标记。
var reader = new StreamReader(File.OpenRead(@"C:\smallerBunShou.txt"), Encoding.UTF8);
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
listA.Add(values[0]);
// listB.Add(values[1]);
// listC.Add(values[2]);
}
int sizeOflistA = listA.Count();
//using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\WriteLines2.txt"))
var file = new StreamWriter(File.OpenWrite(@"C:\WriteLines2.txt"), Encoding.UTF8);
{
foreach (string line in listA)
{
// If the line doesn't contain the word 'Second', write the line to the file.
if (!line.Contains("Second"))
{
file.WriteLine(line);
}
}
}
我也尝试过 Encoding.Unicode 等。我的电脑是日文 PC,软件大多是日文。根据迄今为止的答案之一,这不是 unicode 问题,日本 PC 使用 Shift-JIS,这很可能是我需要研究的。当我解决这个问题时,我会发布我的解决方案。
更新:看了一圈后,我发现了 Shift-JIS 编码方案。
Encoding.GetEncoding(932));
这解决了我的问题!感谢@EricFalsken 为我指明了正确的方向。