从本质上说,ISO-8859-1是单字节编码,自身不能显示中文,若要显示中文,必须和其他能显示中文的编码配合,如“GBK”,“UTF-8",
以ISO-8859-1编码的文本,都以bytes[]的形式保存,若要显示中文,只需以显示平台的默认编码格式进行解码即可。若仍然以ISO-8859-1格式解码,得到的中文字符肯定是乱码,因为ISO-8859-1自身不能显示中文。
Latin1即ISO-8859-1,它是单字节编码,它本身无法表示中文,不过既然它是byte[],那么其它编码内容,就可以以它存起来(toLatin1),用时候用该编码解释即可。
QString.toLatin1() // 返回QByteArray,可以认为,toLatin1并不是要转换为latin语,而仅仅是利用它单字节存储特性作为字节数组用。
latin1
latin1又名ISO-8859-1,编码表如下:

demo3
一共256个字符!这就是传说中的单字节编码,mysql选它做默认的编码方式,那么mysql为什么选它做默认编码方式,而不是其他的编码方式呢?
细想一下:
字符串转化为二进制,肯定都是以字节为单位的(8的倍数),所以无论存储什么字符串都能将其完整的对应到demo3的索引表中,读取时可能会乱码,但至少保证了数据的完整性。其他的编码方式显然不具备单字节编码的这种优势,有可能造成数据丢失!

本文介绍了ISO-8859-1编码的特性,强调其作为单字节编码无法直接显示中文。讨论了在处理包含中文的数据时,需要与其他编码(如GBK, UTF-8)配合使用以避免乱码问题。同时,解释了MySQL选择ISO-8859-1作为默认编码的原因,主要在于其数据完整性的保障。最后,探讨了如何在Qt环境中利用QString的toLatin1()方法处理字节序列。


被折叠的 条评论
为什么被折叠?



