UTF-8,UTF-16和UTF-32有什么区别?
我知道他们都将存储Unicode,并且每个都使用不同的字节数来表示字符.选择一个优于另一个是否有优势?
是什么之间的区别Unicode,UTF8,UTF7,UTF16,UTF32,ASCII,和ANSI编码?
这些对程序员有什么帮助?
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) 我们有一个Web应用程序,可以导出包含UTF-8的外来字符的CSV文件,没有BOM.Windows和Mac用户都在Excel中获得垃圾字符.我尝试用BOM转换为UTF-8; Excel/Win很好用,Excel/Mac显示乱码.我正在使用Excel 2003/Win,Excel 2011/Mac.这是我尝试过的所有编码:
Encoding BOM Win Mac
-------- --- ---------------------------- ------------
utf-8 -- scrambled scrambled
utf-8 BOM WORKS scrambled
utf-16 -- file not recognized file not recognized
utf-16 BOM file not recognized Chinese gibberish
utf-16LE -- file not recognized file not recognized
utf-16LE BOM characters OK, same as Win
row data all in first field
Run Code Online (Sandbox Code Playgroud)
最好的是具有BOM的UTF-16LE,但CSV不被识别.字段分隔符是逗号,但分号不会改变.
是否有任何编码在两个世界都有效?
我正在压缩JavaScript文件,压缩器抱怨我的文件中有字符.
如何搜索这些字符并将其删除?
在一个相关的问题之后,我想问一下C++ 11中的新字符和字符串文字类型.看来我们现在有四种字符和五种字符串文字.角色类型:
char a = '\x30'; // character, no semantics
wchar_t b = L'\xFFEF'; // wide character, no semantics
char16_t c = u'\u00F6'; // 16-bit, assumed UTF16?
char32_t d = U'\U0010FFFF'; // 32-bit, assumed UCS-4
Run Code Online (Sandbox Code Playgroud)
和字符串文字:
char A[] = "Hello\x0A"; // byte string, "narrow encoding"
wchar_t B[] = L"Hell\xF6\x0A"; // wide string, impl-def'd encoding
char16_t C[] = u"Hell\u00F6"; // (1)
char32_t D[] = U"Hell\U000000F6\U0010FFFF"; // (2)
auto E[] = u8"\u00F6\U0010FFFF"; // (3)
Run Code Online (Sandbox Code Playgroud)
问题是:\x/ \u/ \U …
我要求解释Unicode中所有可能有效组合的计数.我知道char可以编码为1,2,3或4个字节.我也不明白为什么延续字节有限制,即使该字符的起始字节清除它应该有多长.
我在我的Android应用程序中使用了一些webview,但无法使它们以utf-8编码显示.
如果使用这个我不会看到我的斯堪的纳维亚字符:
mWebView.loadUrl("file:///android_asset/om.html")
Run Code Online (Sandbox Code Playgroud)
如果尝试这个,我根本不会显示任何东西
mWebView.loadDataWithBaseURL("file:///android_asset/om.html", null, "text/html", "utf-8",null);
Run Code Online (Sandbox Code Playgroud)
问候
我从未明白UTF-16编码的重点.如果您需要能够将字符串视为随机访问(即代码点与代码单元相同),则需要UTF-32,因为UTF-16仍然是可变长度的.如果你不需要这个,那么与UTF-8相比,UTF-16似乎是一种巨大的空间浪费.UTF-16优于UTF-8和UTF-32有什么优势?为什么Windows和Java将它用作本机编码?
什么应该使用什么时候?或者总是更好地使用UTF-8?或ISO-8859-1在特定条件下仍具有重要意义?
字符集是否与地理区域相关?
编辑:
放这个代码有什么好处 @charset "utf-8";
或者像这样 <link type="text/css; charset=utf-8" rel="stylesheet" href=".." />
在CSS文件的顶部?
我找到了这个
如果在向文档添加嵌入式样式时DreamWeaver添加了标记,那么这就是DreamWeaver中的错误.来自W3C FAQ:
"对于文档中嵌入的样式声明,不需要@charset规则,不得使用."
charset规范是自2.0版本(可能是1998年)以来CSS的一部分,所以如果你在CSS文件中有一个charset规范而Safari无法处理它,那就是Safari中的一个错误.
并在表单中添加accept-charset
<form action="/action" method="post" accept-charset="utf-8">
Run Code Online (Sandbox Code Playgroud)
如果我使用xhtml doctype应该使用什么
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
要么
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Run Code Online (Sandbox Code Playgroud)