mysql iso88591_MySQL查询前解码ISO88591并编码为UTF8

As UTF-8 is an 8-bit encoding no BOM is required and any U+FEFF

character in the decoded string (even if it’s the first character) is

treated as a ZERO WIDTH NO-BREAK SPACE.

Without external information it’s impossible to reliably determine

which encoding was used for encoding a string. Each charmap encoding

can decode any random byte sequence. However that’s not possible with

UTF-8, as UTF-8 byte sequences have a structure that doesn’t allow

arbitrary byte sequences. To increase the reliability with which a

UTF-8 encoding can be detected, Microsoft invented a variant of UTF-8

(that Python 2.5 calls "utf-8-sig") for its Notepad program: Before

any of the Unicode characters is written to the file, a UTF-8 encoded

BOM (which looks like this as a byte sequence: 0xef, 0xbb, 0xbf) is

written. As it’s rather improbable that any charmap encoded file

starts with these byte values (which would e.g. map to

LATIN SMALL LETTER I WITH DIAERESIS RIGHT-POINTING DOUBLE ANGLE

QUOTATION MARK INVERTED QUESTION MARK in iso-8859-1), this increases

the probability that a utf-8-sig encoding can be correctly guessed

from the byte sequence. So here the BOM is not used to be able to

determine the byte order used for generating the byte sequence, but as

a signature that helps in guessing the encoding. On encoding the

utf-8-sig codec will write 0xef, 0xbb, 0xbf as the first three bytes

to the file. On decoding utf-8-sig will skip those three bytes if they

appear as the first three bytes in the file. In UTF-8, the use of the

BOM is discouraged and should generally be avoided.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值