用c#编写、显示和存储日文字符
本文关键字:文字符 字符 存储 编写 显示 | 更新日期: 2023-09-27 18:08:19
我正在做一个需要大量日语片假名、平假名和汉字的项目。原始文件为excel文件,字体为"MS P"。我遇到的问题似乎和c#中遇到这类问题的其他人一样。我找到的解决方案似乎都是从在c#程序中添加文本开始的。我要做的是阅读我的。xls或。txt文件之一,我已经制作成c#,使用正常的c#函数,如字符串比较的数据工作。然而,当我这样做时,什么也没有发生。写入或显示数据会产生"?"标记。
我用c++尝试了同样的想法,它工作得很好。
问题是它必须是c#,而不是c++,以便与我正在使用的其他软件的互操作一起工作。
长话短说,与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);
}
}
}
我也试过编码。Unicode等等。我的电脑是一台日本的个人电脑,软件大部分是日本的。根据到目前为止的一个答案,这不是unicode问题,日本pc使用Shift-JIS,这很可能是我需要研究的。当我解决了这个问题,我会把我的解决方案。
更新:环顾四周后,我发现了Shift-JIS编码方案。
Encoding.GetEncoding(932));
这解决了我的问题!谢谢你@EricFalsken给我指出了正确的方向。
Normal .txt文件不以Unicode格式保存。在读取FileStream时,您需要通过TextReader和Encoding.Unicode运行它来指定字节格式。
但是请注意,大多数日本计算机和文档不使用Unicode。他们仍然广泛使用Shift-JIS。
我可以向你保证c#中的所有字符串都支持Unicode。