html表单中的奇怪的领先unicode帖子

时间:2012-08-19 13:53:51

标签: character-encoding

偶尔我会发生这些错误:

An invalid character was found in the mail header: '‎'

这没有任何意义,经过调查,似乎那里有一些看不见的角色。

我知道这是哪个用户,所以我从数据库中选择它们:

select email from user where email = 'their@address.com'

用户的电子邮件显示为their@address.com,但将其复制到文本编辑器中,会显示一个奇怪的前导字符:

enter image description here

那么为什么sql相等运算符匹配,当它不是同一个字符串?因为它有一些看不见的炭?

如果我将文本文件中的那个前导字符保存为unicode并在十六进制编辑器中打开它,我会看到:

FF FE 0E 20

<击>

更新:违规字节为:

E2 80 8E

这是什么疯狂,它是如何实现的?

我如何在将来阻止这种情况,以及如何清理我的数据库(因为其中有一些)

这些是创建用户时的相关标题:

Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

由于

2 个答案:

答案 0 :(得分:2)

字节FF FE是UTF-16BE编码中的U + FEFF BYTE ORDER MARK,0E 20是相同编码中的U + 200E LEFT-TO-RIGHT MARK。在文件的开头,它们是无害的,至少如果内容是从左到右的书写系统,如拉丁字母。

我无法猜测它们的来源,特别是因为我没有完全了解正在讨论的文件及其创建方式(来自数据库的表格帖子?其他方式?如何?)。

答案 1 :(得分:1)

FFFE是Unicode Byte Order Mark (BOM)

修改

0E20是THAI CHARACTER PHO SAMPHAO。不知道那可能来自哪里。