用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给我指出了正确的方向。

用c#编写、显示和存储日文字符

Normal .txt文件不以Unicode格式保存。在读取FileStream时,您需要通过TextReader和Encoding.Unicode运行它来指定字节格式。

但是请注意,大多数日本计算机和文档不使用Unicode。他们仍然广泛使用Shift-JIS。

我可以向你保证c#中的所有字符串都支持Unicode。