我正在开展一个需要大量日本片假名,平假名和汉字字符的项目。原始文件是使用“MS Pゴシック”字体的excel文件。我遇到的问题似乎和其他所有这类问题和c#一样。我发现的解决方案似乎都是从在c#程序中添加文本开始的。 我想要做的是读取我在c#中创建的.xls或.txt文件之一,使用普通的c#函数(如字符串比较)处理数据。但是,当我这样做时,注意到了。写入或显示数据会产生“?”分数。这里没什么新鲜的。
我用c ++尝试了同样的想法,它完美无缺。
问题是它必须是c#,而不是c ++才能使用我正在使用的其他软件的interop。
长话短说,与c ++(c string)相比,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等。 我的电脑是日本电脑,软件主要是日本人。根据到目前为止的答案之一,它不是unicode问题,日本PC使用Shift-JIS,这很可能是我需要研究的。当我解决这个问题时,我会发布我的解决方案。
更新: 环顾四周后,我找到了Shift-JIS编码方案。
Encoding.GetEncoding(932));
这解决了我的问题!谢谢@EricFalsken指出我正确的方向。
答案 0 :(得分:4)
普通.txt文件不以Unicode格式保存。在通过TextReader和Encoding.Unicode运行FileStream时,您需要指定字节格式。
但请注意,大多数日本计算机和文档都不使用Unicode。他们仍然广泛使用Shift-JIS。
我可以向您保证,C#中的所有字符串本身都支持Unicode。