UTF-8,UTF-16和UTF-32有什么区别?
我知道他们都将存储Unicode,并且每个都使用不同的字节数来表示字符.选择一个优于另一个是否有优势?
什么是Unicode的基础以及为什么需要UTF-8或UTF-16?我在Google上研究了这个并在这里搜索过,但我不清楚.
在VSS进行文件比较时,有时会有消息说这两个文件有不同的UTF.为什么会这样呢?
请简单解释一下.
我正在阅读文档StringBuffer,特别是reverse()方法.该文件提到了代理人对的一些内容.在这种情况下,什么是代理对?什么是低和高代理人?
我在git中跟踪虚拟PC虚拟机文件(*.vmc),在进行更改后,git将该文件识别为二进制文件并且不会为我进行区分.我发现该文件是用UTF-16编码的.
可以教git识别这个文件是文本并适当处理它吗?
我在Cygwin下使用git,core.autocrlf设置为false.如果需要,我可以在UNIX下使用mSysGit或git.
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();
Run Code Online (Sandbox Code Playgroud) 这里有两个问题.我有一组文件,通常是带有BOM的UTF-8.我想将它们(理想情况下)转换为没有BOM的UTF-8.似乎codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)会处理这个问题.但我真的没有看到任何关于使用的好例子.这是处理这个的最佳方法吗?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
Run Code Online (Sandbox Code Playgroud)
此外,如果我们能够处理不同的输入编码而不明确地知道(看到ASCII和UTF-16),那将是理想的.看起来这应该都是可行的.有没有可以将任何已知的Python编码和输出作为UTF-8而无BOM的解决方案?
从下面编辑1提出的sol'n(谢谢!)
fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding
fp.write(s)
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)
我在评论中被告知错误是我用模式'rw'而不是'r +'/'r + b'打开文件,所以我最终应该重新编辑我的问题并删除已解决的部分.
我从未明白UTF-16编码的重点.如果您需要能够将字符串视为随机访问(即代码点与代码单元相同),则需要UTF-32,因为UTF-16仍然是可变长度的.如果你不需要这个,那么与UTF-8相比,UTF-16似乎是一种巨大的空间浪费.UTF-16优于UTF-8和UTF-32有什么优势?为什么Windows和Java将它用作本机编码?
Big Endian和Little Endian Byte命令有什么区别?
这两者似乎都与Unicode和UTF16有关.我们到底在哪里使用它?
标准grep/ pcregrep等可以方便地与二进制文件一起用于ASCII或UTF8数据 - 是否有一种简单的方法可以让它们尝试UTF16(最好是同时,但反过来会这样做)?
我试图获得的数据无论如何都是ASCII(库中的引用等),它只是找不到,因为有时两个字符之间有00,有时则没有.
我没有看到任何方法在语义上完成它,但是这些00应该可以解决问题,除了我不能在命令行上轻松使用它们.
本质上,string使用UTF-16字符编码形式
但是当与StreamWriter保存时:
此构造函数创建一个StreamWriter,其UTF-8编码没有字节顺序标记(BOM),
我见过这个样本(删除了断开的链接):

utf8对于某些字符串看起来更小,而utf-16在其他字符串中则更小.
utf16在utf8保存文件时使用字符串的默认编码?谢谢.
ps我已经读过这篇着名的文章了