【问题标题】:Wrong encoding, output file gives � instead of normal char编码错误,输出文件给出 � 而不是普通字符
【发布时间】:2013-05-28 22:23:57
【问题描述】:

我想制作一个程序,在文件中搜索所需的单词字符(字母 č ć ž š),用 c z s 等替换它们并保存文件。然而,在我的尝试中,我得到了一些愚蠢的迹象,这意味着它错误地打开了文件。当我尝试添加 encoding.unicode 时,它给了我错误(如下所示)。还有一个问题,如何制作一个通过将文件拖入 .exe 文件来打开文件的程序。

错误 3 最好的重载方法匹配 'System.IO.File.Open(字符串,System.IO.FileMode, System.IO.FileAccess)' 有一些无效 参数 C:\Users\Vulisha\AppData\Local\Temporary 项目\ConsoleApplication1\Program.cs 14 59 ConsoleApplication1

错误 4 参数“3”:无法从“System.Text.Encoding”转换为 'System.IO.FileAccess' C:\Users\Vulisha\AppData\Local\Temporary 项目\ConsoleApplication1\Program.cs 14 122 ConsoleApplication1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (StreamReader stream = new StreamReader(File.Open(@"C:\Users\Vulisha\Desktop\titl.txt", FileMode.Open)))
            {
                string fileText = stream.ReadToEnd();

                // Do your replacements
                fileText = fileText.Replace(@"č", @"c");
                fileText = fileText.Replace(@"ć", @"c");
                fileText = fileText.Replace(@"š", @"s");
                fileText = fileText.Replace(@"ž", @"z");
                fileText = fileText.Replace(@"đ", @"d");
                fileText = fileText.Replace(@"Č", @"C");
                fileText = fileText.Replace(@"Č", @"C");
                fileText = fileText.Replace(@"Š", @"S");
                fileText = fileText.Replace(@"Ž", @"Z");
                fileText = fileText.Replace(@"Đ", @"D");

                using (StreamWriter writer = new StreamWriter(File.Open(@"titl.txt", FileMode.Create)))
                {
                    // You do a create because the new file will have less characters than the old one
                    writer.Write(fileText);
                }
            }
        }
    }
}

【问题讨论】:

  • 如果文件被拖放到您的可执行文件中,它们将作为命令行参数传递。这就是您的 Main(string[] args) 方法中的 args[] 数组。
  • 非常感谢您的欢迎,我现在将使用这个字符串 args 玩一下,从现在开始我会更加注意

标签: c# unicode encoding


【解决方案1】:

您需要更加小心地放置括号。你需要

new StreamWriter(File.Open(@"titl.txt", FileMode.Create), Encoding.Unicode)

但你写了

new StreamWriter(File.Open(@"titl.txt", FileMode.Create, Encoding.Unicode))

看到区别了吗?

【讨论】:

  • 哦,我太笨了 :P,非常感谢它解决了这个问题,实际上我使用 Encoding.Default 因为 Unicode 不会一直工作,但谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 2014-10-18
相关资源
最近更新 更多