ISO-8859-1 乱码解码 0 字符编码: UTF-8 UTF-16LE UTF-16BE GBK(简繁体) GB18030(中日韩) Big5(台湾繁体中文) ASMO-708 CP1025 CP866 CP875 DOS-720 DOS-862 EUC-JP IBM-THAI IBM037 IBM273 IBM277 IBM278 IBM280 IBM284 IBM285 IBM290 IBM297 IBM420 IBM423 IBM424 IBM437 IBM500 IBM737 IBM775 IBM850 IBM852 IBM855 IBM857 IBM860 IBM861 IBM863 IBM864 IBM865 IBM869 IBM870 IBM871 IBM880 IBM905 IBM1026 IBM00858 IBM00924 IBM01047 IBM01140 IBM01141 IBM01142 IBM01143 IBM01144 IBM01145 IBM01146 IBM01147 IBM01148 IBM01149 ISO-8859-1 ISO-8859-2 ISO-8859-3 ISO-8859-4 ISO-8859-5 ISO-8859-6 ISO-8859-7 ISO-8859-8 ISO-8859-9 ISO-8859-13 ISO-8859-15 JOHAB KOI8-R KOI8-U KS_C_5601-1987 MACINTOSH SHIFT_JIS US-ASCII UTF-32LE UTF-32BE WINDOWS-1250 WINDOWS-1251 WINDOWS-1252 WINDOWS-1253 WINDOWS-1254 WINDOWS-1255 WINDOWS-1256 WINDOWS-1257 WINDOWS-1258 WINDOWS-874 X-CHINESE-CNS X-CHINESE-ETEN X-CP20001 X-CP20003 X-CP20004 X-CP20005 X-CP20261 X-CP20269 X-CP20936 X-CP20949 X-EBCDIC-KOREANEXTENDED X-EUROPA X-IA5 X-IA5-GERMAN X-IA5-NORWEGIAN X-IA5-SWEDISH X-MAC-ARABIC X-MAC-CE X-MAC-CHINESETRAD X-MAC-CROATIAN X-MAC-CYRILLIC X-MAC-GREEK X-MAC-HEBREW X-MAC-ICELANDIC X-MAC-JAPANESE X-MAC-ROMANIAN X-MAC-THAI X-MAC-TURKISH X-MAC-UKRAINIAN 解码 ↕ 交换 清空 0 说明 ISO-8859-1 编码范围使用了单字节内的所有空间,在支持 ISO-8859-1 的系统中传输和存储其他任何编码的字节流都不会被抛弃。 换言之,把其他任何编码的字节流当作 ISO-8859-1 编码看待都没有问题。 这是个很重要的特性,MySQL 数据库默认编码是 Latin1 就是利用了这个特性。ASCII 编码是一个 7 位的容器,ISO-8859-1 编码是一个 8 位的容器。 用 Latin 1 存储中文有没有问题?答案是没有问题,但是并不建议。 因为如此数据库层面不再提供任何正确的字符语义,排序、比较、长度、函数结果全部错乱。 例如你把 UTF-8 编码的“中”字(UTF-8 编码为 0xE4B8AD,占三个字节)存入了 Latin 1 编码的 Mysql 表,那么在 Mysql 眼里,你存入的并不是一个“中”字,而是三个 Latin 1 的字母(0xE4,0xB8,0xAD)。本质上,你存的数据值依然是 0xE4B8AD,这种“欺骗”Mysql 的行为并没有导致数据丢失,只不过你需要注意读取出来该值的时候,自己要以 UTF-8 编码的方式显示出来,要不然就是乱码。 所以这个工具的作用就是先把乱码(实际是 Latin 字符)转成十六进制,然后再选择合适的字符集解码成原始的字符。比如汉字“中”,以 UTF-8 编码之后是 0xE4B8AD,再以 ISO-8859-1 编码显示是 ä¸。还原的步骤就是把ä¸以 ISO-8859-1 编码成十六进制得到 E4B8AD,再以 UTF-8 解码就得到原始的汉字“中”。 使用 C# 还原乱码示例: byte[] raw = Encoding.GetEncoding("ISO-8859-1").GetBytes("ä¸"); string result = Encoding.UTF8.GetString(raw); Console.WriteLine(result); 乱码总结 你看到的“ISO-8859-1 乱码”几乎 100 % 并不是真的 ISO-8859-1,而是 “本来应该是 UTF-8(或 GBK)的字节流,被终端/浏览器/数据库按 ISO-8859-1 解码了”。 因此“解码”要做的其实是把误用的 ISO-8859-1 还原成原始字节流,再重新用真正的编码去解析。 只要字节还在,这个过程可逆,不会丢信息;一旦中间某个环节把字节转成了“字符”并做了转码,就可能永远救不回来。 您最近使用了:随机数生成器HTML 在线运行反应时间测试Windows Office 下载GB2312 编码表人民币大写转换