首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTF8编码问题?

UTF8编码问题?
EN

Stack Overflow用户
提问于 2015-09-11 13:55:18
回答 4查看 1.9K关注 0票数 2

我正在调用一个错误的服务,告诉我下面的字符串存在编码问题:

普适

据我理解,这个字符串是"utf8“编码的。这是对utf8编码的正确理解吗?如果是这样的话,这是否表明我应该删除utf8编码?如果是的话,对于如何在Java中对utf8字符串进行去编码,有什么建议吗?

或者我错了,上面的字符串不是utf8编码的吗?如果是的话,有什么建议来对它进行编码吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-11 14:11:47

Java存储字符串的方式与它在消息中的编码方式不同。你可以尝试这样的方法:

代码语言:javascript
复制
String s = "Universal®";
byte[] encoded = s.getBytes(Charset.forName("UTF-8"));

您必须捕获UnsupportedCharsetException,但是UTF-8是一个标准的可用字符集。

或者您可能需要在发送API中设置编码,比如HTTP。

票数 6
EN

Stack Overflow用户

发布于 2015-09-11 14:36:37

带有® U+00AE的“Universal”不能用普通的7位ASCII表示,尽管它可以用其他几个字符集/编码来表示。通用Unicode编码UTF-8可以混合任何脚本。

在某些编码中,需要将文本转换为字节,才能声明其编码。

在java中,字符串在内部是Unicode,可以处理任何事情。

但是,由于java源代码编码是免费的,所以它必须与java编译器javac使用的编码相同。但是,您可以使用u转义,使用ASCII来表示特殊符号(在UTF-16范围内):

代码语言:javascript
复制
String s = "Universal\u00AE";
byte[] bytes = s.getBytes(StandardCharsets.UTF_8);
String t = new String(bytes, StandardCharsets.UTF_8);
assert t.equals(s);
票数 2
EN

Stack Overflow用户

发布于 2015-09-11 14:04:45

在非常普遍的意义上,编码只是位的分类和分配,用于表示字符串。有关更多详细信息,请参阅下面的链接。通常,所有编码类型都是可以相互转换的,但也有一些例外。您可能已经看到了标记不能显示的符号的大型空白方块/等等。这通常是由编码错误(例如该编码方案不存在的字符)引起的。

https://en.wikipedia.org/wiki/UTF-8

根据您的具体问题,列出的字符串应该是UTF-8可编码的.它可能是以另一种编码类型保存的(这可能会导致问题)。你总是可以尝试把它转换成UTF-8,看看会发生什么。

编辑-关于注释,我认为问题与在尝试通过服务(或服务)传输它之前没有正确编码有关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32525201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档