0

我正在做一个需要大量日文片假名、平假名和汉字字符的项目。原始文件是使用“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 为我指明了正确的方向。

4

1 回答 1

4

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

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

我可以向您保证,C# 中的所有字符串都本机支持 Unicode。

于 2013-04-10T08:05:41.820 回答