Tag: utf 8

如何在c#中将字符串从utf8转换(音译)为ASCII(单字节)?

我有一个字符串对象 “有多个角色甚至特殊字符” 我正在尝试使用 UTF8Encoding utf8 = new UTF8Encoding(); ASCIIEncoding ascii = new ASCIIEncoding(); 对象,以便将该字符串转换为ascii。 我可以请某人为这个简单的任务带来一些启示,那就是打猎我的下午。 编辑1:我们要完成的是摆脱一些特殊的字符撇号等特殊字符。 我在下面发布的代码作为答案将不会处理。 基本上 奥布莱恩将成为奥?布莱恩。 其中’是特殊撇号之一

使用.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 – 但重音字符被渲染为问号。 我错过了什么步骤?

如何在字符串比较中忽略UTF-8字节顺序标记?

我在使用Visual Studio 2010比较C#4.0中的unit testing中的字符串时遇到问题。同样的测试用例在Visual Studio 2008中正常工作(使用C#3.5)。 这是相关的代码段: byte[] rawData = GetData(); string data = Encoding.UTF8.GetString(rawData); Assert.AreEqual(“Constant”, data, false, CultureInfo.InvariantCulture); 在调试此测试时, data字符串肉眼看来包含与文字完全相同的字符串。 当我调用data.ToCharArray() ,我注意到字符串data的第一个字节是值65279 ,它是UTF-8字节顺序标记。 我不明白的是为什么Encoding.UTF8.GetString()保持这个字节。 如何让Encoding.UTF8.GetString() 不将字节顺序标记放在结果字符串中? 更新:问题是GetData()从磁盘读取文件,使用FileStream.readbytes()从文件中读取数据。 我通过使用StreamReader并使用Encoding.UTF8.GetBytes()将字符串转换为字节来纠正这个问题,这应该是它本来应该做的! 谢谢你的帮助。