相关疑难解决方法(0)

使用.NET如何将包含Latin-1重音字符的ISO 8859-1编码文本文件转换为UTF-8

我正在发送以ISO 88591-1格式保存的文本文件,其中包含来自Latin-1范围的重音字符(以及普通的ASCII az等).如何使用C#将这些文件转换为UTF-8,以便ISO 8859-1中的单字节重音字符成为有效的UTF-8字符?

我尝试使用带有ASCIIEncoding的StreamReader,然后通过实例化编码ascii和编码utf8然后使用Encoding.Convert(ascii, utf8, ascii.GetBytes( asciiString) )- 将ASCII字符串转换为UTF-8,但重音字符被渲染为问号.

我错过了什么步骤?

c# utf-8 iso-8859-1 latin1

16
推荐指数
2
解决办法
5万
查看次数

未在System.Windows.Forms.TextBox中显示的Unicode字符

当我从VisualStudio调试器中剪切并粘贴它们时,这些字符显示正常,但是在调试器和我试图显示此文本的TextBox中,它只显示正方形.

说明\ r \n海流受季风影响,3-9月份其流向主要向北,流速为2节,有时达3节; 10月至次年4月份其流向南至东南方向,流速为2节. r \ñ注意\ r \n附近有火山爆发的危险,航行时严加注意\ r \n

我认为TextBox支持Unicode文本.知道如何在我的应用程序中显示此文本吗?

c# forms unicode user-interface textbox

12
推荐指数
2
解决办法
2万
查看次数

重写文本时未保留非英文字符

我在客户网站上遇到了一个问题,其中包含"HabitaþÒo"字样的行会在输出中受到损坏.我正在处理一个文本文件(拉出选定的行并将它们写入另一个文件)

为了诊断,我把问题归结为一个只有那个坏词的文件.

原始文件不包含BOM,但.net选择将其读作UTF-8.

读取和写入时,这个词最终看起来像"Habita o".

BadWord.txt文件的十六进制转储如下所示

在此输入图像描述

使用此代码复制文件

using (var reader = new StreamReader(@"C:\BadWord.txt"))
using (var writer = new StreamWriter(@"C:\BadWordReadAndWritten.txt"))
    writer.WriteLine(reader.ReadLine());
Run Code Online (Sandbox Code Playgroud)

...给...

在此输入图像描述

保留读者编码也没有做任何事情

using (var reader = new StreamReader(@"C:\BadWord.txt"))
using (var writer = new StreamWriter(@"C:\BadWordReadAndWritten_PreseveEncoding.txt", false, reader.CurrentEncoding))
    writer.WriteLine(reader.ReadLine());
Run Code Online (Sandbox Code Playgroud)

...给... 在此输入图像描述

任何想法在这里发生了什么,我如何处理这个文件并保留原始文本?

.net c# file-io text character-encoding

4
推荐指数
1
解决办法
668
查看次数