Loving Coding & Visual Design

UTF格式下字符串的比较

有两个UTF8的文本文件,前5个字符都是"uid",可是用PHP来比较,==和strcmp都不对。十六进制下看,确实是有不同:

肉眼完全无法辨别。0xFFFE2200后面多了“0xFFFE”这个字符串。原来是有名的U+FEFF. BOM

根据维基的解释,多了FFFE的这个文件实际上是个UTF-16格式。
In UTF-16, a BOM (U+FEFF) may be placed as the first character of a file or character stream to indicate the endianness (byte order) of all the 16-bit code units of the file or stream.

英文倒是好办,用匹配模式清楚杂物即可。中文的话难道要不断检测“0xFFFE”这个字符串。特别是对于不懂技术的客户来说,这可真是伤脑筋。



下一页


最 近 文 章

  1. GAE下If-Modified-Since出错的问题 - Fri, 18 May 2012 06:39:55 +0000
  2. 最长一次租车 - Thu, 17 May 2012 11:04:55 +0000
  3. 这年头,租车是被逼的 - Thu, 19 Apr 2012 11:51:29 +0000
  4. 让CF支持none-www域名访问 - Tue, 17 Apr 2012 15:27:06 +0000
  5. 火狐登录问题:Forbidden (403) CSRF verification failed - Mon, 16 Apr 2012 10:56:27 +0000
  6. Typost - Google Chrome插件测试 - Sun, 15 Apr 2012 18:50:13 +0000
  7. 关于mongodb在32位系统下2G文件大小限制 - Fri, 13 Apr 2012 10:23:03 +0000
  8. Typost - 清理天涯帖子的火狐插件 - Fri, 06 Apr 2012 15:26:26 +0000
  9. Internal Server Error错误 - Wed, 28 Mar 2012 15:07:49 +0000
  10. Nodejs错误:"SyntaxError: Unexpected identifier" - Wed, 28 Mar 2012 11:56:39 +0000