UTF-8和UTF-16之间的区别?我们为什么需要这些?
MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "This is some text";
md.update(text.getBytes("UTF-8")); // Change this to "UTF-16" if needed
byte[] digest = md.digest();
我相信Web上有很多关于此的好文章,但这是一个简短的摘要。
UTF-8和UTF-16都是可变长度编码。但是,在UTF-8中,字符可能至少占据8位,而在UTF-16中,字符长度以16位开始。
UTF-8主要优点:
UTF-8主要缺点:
UTF-16主要优点:
char
作为字符串的原始成分。UTF-16主要缺点:
通常,UTF-16通常更适合于内存中表示,因为BE /
LE在那里无关紧要(仅使用本机顺序)并且索引速度更快(只是不要忘记正确处理代理对)。另一方面,UTF-8非常适合文本文件和网络协议,因为它不存在BE /
LE问题,并且空位终止和ASCII兼容性通常很方便。
我有一个文件,当用geanny显示时*显示UTF-16BE。如果我尝试将这个Java文件转换为不同的编码(假设它是UTF-16BE),那么一个问号(?)每次在新建文件的开头出现。相反,如果我假设它是在UTF-16中(这不是真的),转换后的文件就可以转换了,在开头没有任何问号。有谁能澄清为什么会有这种行为吗?
问题内容: 我们有一个数据输入人员,他在Windows上使用UTF-16编码,并且希望拥有utf-8并删除BOM。utf-8转换有效,但BOM仍然存在。我将如何删除?这是我目前拥有的: 如果我使用hexdump -CI,请参阅: 在结果文件中。如何删除物料清单? 谢谢 问题答案: 只需使用和: 将为您摆脱BOM表(并推断出字节序)。
我有下面的代码,它会产生令人困惑的输出。。 所以我想看看utf-8编码和windows-1252之间的区别。但当我看输出时,似乎没有区别。只有当我将windows-1252与utf-16进行比较时,才会有区别。 输出: 谁能解释一下为什么utf-8和windows-1252看起来一样? 干杯Alex
问题内容: 现在考虑下面给出的代码: 当我尝试调试上面代码中的行时,调试器将我带到String类的方法中,然后将我带到StringCoding类的方法中。在调试过程中,encode方法的第一行()返回“ UTF-8”作为默认编码。我希望它是“ UTF-16”。 该程序的输出为: 最= 6700的Unicode值UTF-8字符=最| 默认值:字节数= 3 对应的UTF-16字符= UTF-16:字节
我编程了一个Android应用程序,它管理要在MySQL数据库中存储和删除的数据(在服务器上)。每当在智能手机上使用特殊字符("ä","ü",...)时,符号转换不良。 在日志中,我可以看到“Umlaut”(例如“ä”)正确传输。我还在我的php文件中使用“SET NAMES‘UTF-8’”,请参见此处: 如果我通过Postman启动请求,我可以添加带有特殊字符的单词,例如“TÄST”,json响
本文向大家介绍ascii、unicode、utf-8、gbk 区别相关面试题,主要包含被问及ascii、unicode、utf-8、gbk 区别时的应答技巧和注意事项,需要的朋友参考一下