0

有时我会发生这些错误:

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

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

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

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

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

在此处输入图像描述

那么,当它不是同一个字符串时,为什么 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

谢谢

4

2 回答 2

2

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

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

于 2012-08-19T14:10:24.170 回答
1

FFFE 是Unicode 字节顺序标记 (BOM)

编辑:

0E20 是泰语字符 PHO SAMPHAO。不知道那可能来自哪里。

于 2012-08-19T13:57:53.270 回答