zil*_*n01 93
Jon*_*ler 34
另请参阅具有中文字符的文件如何知道每个字符使用多少字节? - 毫无疑问,还有其他SO问题也会有所帮助.
在UTF-8中,您将获得以下类型的字节:
Binary Hex Comments
0xxxxxxx 0x00..0x7F Only byte of a 1-byte character encoding
10xxxxxx 0x80..0xBF Continuation bytes (1-3 continuation bytes)
110xxxxx 0xC0..0xDF First byte of a 2-byte character encoding
1110xxxx 0xE0..0xEF First byte of a 3-byte character encoding
11110xxx 0xF0..0xF4 First byte of a 4-byte character encoding
Run Code Online (Sandbox Code Playgroud)
(最后一行看起来好像应该读取0xF0..0xF7;但是,21位的Unicode范围(U + 0000 - U + 10FFFF)意味着最大有效值为0xF4;值0xF5..0xF7不会出现在有效的UTF-8.)
查看特定的字节序列是否有效UTF-8意味着您需要考虑:
在有效的UTF-8中,不能发生字节0xF5..0xFF.
某些字符有多种可能的表示形式.例如,Unicode字符U + 0000(ASCII NUL)可以表示为:
0x00
0xC0 0x80
0xE0 0x80 0x80
0xF0 0x80 0x80 0x80
Run Code Online (Sandbox Code Playgroud)
但是,Unicode标准明确指出最后三种替代方案是不可接受的,因为它们并不是最小的.碰巧的是,字节0xC0和0xC1永远不会出现在有效的UTF-8中,因为可以由这些字符编码的唯一字符最低限度编码为0x00..0x7F范围内的单字节字符.
在基本多语言平面(BMP)中,Unicode值U + D800 - U + DFFF保留用于UTF-16代理,并且不能以有效的UTF-8编码.如果它们在UTF-8中有效(我强调,它们不是),那么代理将被编码:
因此,您的BAD数据应包含违反这些处方的样本.
请注意,字节顺序标记(BOM)U + FEFF,即零宽度无中断空间(ZWNBSP),在UTF-8中不能出现未编码 - 在有效的UTF-8中不允许使用字节0xFF和0xFE.编码的ZWNBSP可以作为0xEF 0xBB 0xBF出现在UTF-8文件中,但是在UTF-8中BOM完全是多余的.
Unicode 中也有一些非字符.U + FFFE和U + FFFF是两个这样的非字符(每个平面中的最后两个代码点,U + 1FFFE,U + 1FFFF,U + 2FFFE,U + 2FFFF,... U + 10FFFE,U + 10FFFF等等).这些通常不应出现在用于数据交换的Unicode数据中,但可以出现在私人使用中.有关许多sordid详细信息,请参阅Unicode FAQ链接,包括Unicode中非字符的相当复杂的历史记录.(更正#9:关于非人物的澄清,于2013年1月发布,按其标题所示 - 澄清非人物的含义.)
She*_*uka 15
您可以使用Jeffrey Bergamini的这个方便的在线工具将任何文本转换为非常奇怪的UTF8字符串的Homoglyphs.
一个典型的
Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
变成这样:
Ḽơᶉëᶆᶆšᶙṁᶙṁḍỡḽǭᵳǐťť,ĉṓɲṩḙċťᶒţûɾɾčįɳġįɳġłįʈ,şếᶑᶑᶁⱺẽḭŭŝḿꝋďṫĕᶆᶈṓɍỉḉḉḑȋᵭṵḑȋᵭṵťťťṷŧḹẩḇꝛꝛȶȶȶ.
| 归档时间: |
|
| 查看次数: |
77151 次 |
| 最近记录: |