当前位置: 首页 > 知识库问答 >
问题:

UTF-8编码和解码问题

柯乐池
2023-03-14

我在将文本从UTF-8编码转换为UTF-8编码时遇到问题。这里有字节数组,

byte[] c = new byte[] { 1, 2, 200 };

我正在将其转换为UTF-8字符串并返回字节数组,

Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(c));

据我所知,这是一个3字节的数组。正当但这是我得到的。

byte[5] { 1, 2, 239, 191, 189 }

这是什么原因?据我所知,在UTF-8 Specials中,2391189组合被称为替换字符。

这也是一个更大问题的一部分。

共有1个答案

方野
2023-03-14

并非所有字节序列都是有效的UTF-8。似乎您的数组(1,2,200)在UTF-8中无效(这就是添加此特殊错误字符的原因)

MSDN谈到了编码。UTF8:

它返回一个提供Unicode字节顺序标记(BOM)的UTF8Encoding对象。要实例化不提供BOM的UTF8编码,请调用UTF8Encoding构造函数的任何重载。

1) 没有BOM表(https://en.wikipedia.org/wiki/Byte_order_mark)在您的示例中。

2) 200-前导字节。它后面必须有足够的连续字节

 类似资料:
  • 我想知道是否有人能帮忙,我很难将UTF-8字符发布到SagePay。数据库是MySQL,带有数据库字符集utf8和数据库排序规则utf8_general_ci。数据库连接字符串使用useUnicode=true 所有发布到数据库的数据都存储为UTF-8,所有查询的数据都显示为UTF-8,但当字符串编码如下时: 然后发到SagePay,他们会收到一个来自国际字符所在位置的乱码字符串。如果字符串中不包

  • 问题内容: 使用UTF-8编码创建字符串时存在不一致的地方。 运行此代码: 在Java 1.8.0_20(及更早版本)上,我们得到结果 在Java 1.7和1.6上,我们得到正确的结果: 您遇到此错误了吗?有没有解决方法? 对于Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208来说,这种不一致也很明显,但显

  • 问题内容: 我想从请求中获取参数(带有重音符的字符),但是它不起作用。我尝试使用,但也没有用。 我知道返回正确的字符,但不起作用! 有人有主意吗? 问题答案: Paul的建议似乎是最好的做法,但如果要解决此问题,则根本不需要URLEncoder或URLDecoder: 更新: 由于获得了很多选票,我想强调BalusC的观点,即这绝对不是解决方案。充其量是一种解决方法。人们不应该这样做。 我不知道是

  • 问题内容: 我正在用python做一些脚本。我创建一个保存在文件中的字符串。这个字符串有很多数据,来自目录的树状结构和文件名。根据convmv的介绍,我所有的树状结构都是UTF-8。 我想将所有内容都保留在UTF-8中,因为之后我将其保存在MySQL中。现在,在UTF-8的MySQL中,我遇到了一些字符问题(例如é或è-我是法语)。 我希望python始终将字符串用作UTF-8。我在互联网上阅读了

  • 问题内容: 我想编码一个可能是图像或任何pdf的文件并将其发送到服务器。我必须遵循哪种类型的编码和解码。(服务器和客户端都在我们公司内。我们可以在两个地方都写逻辑)。Java默认情况下支持 UTF-8编码 。并使用 Base-64 编码,我必须导入外部jar。对于简单的文本,两种方法都可以正常工作。我正在使用tcp套接字编程。 使用UTF-8编码 使用Base-64(使用Apache的common

  • 我需要导出javascript数组到CSV文件和下载。我这么做了,但是'ó,ü,ö,ó,ş'这些字符在CSV文件中看起来像'\\\\\\\\\\\'。我已经尝试了这个网站上推荐的许多解决方案,但对我不起作用。 我添加了我的代码片段,有人能解决这个问题吗?