PHP:如何获得用ANSI编码的输入

时间:2014-05-21 00:48:12

标签: php utf-8 character-encoding iso-8859-1

当添加诸如?key =é的get参数时,PHP会立即将该值转换为UTF8。 我的脚本不是UTF8,我必须通过$ _GET ['key']获取ISO-8859-1中的数据

该值的strlen应为1.不是2.

如何在不使用mb或iconv等依赖项的情况下在非UTF8中获取该数据。

1 个答案:

答案 0 :(得分:1)

  

当添加诸如?key =é的get参数时,PHP会立即将该值转换为UTF8。我的脚本不是UTF8,我必须通过$ _GET ['key']获取ISO-8859-1中的数据

此声明不正确。 PHP不负责 - Web浏览器以UTF-8字符串编码将数据发送到Web服务器,PHP以相同的形式将其传递给您的应用程序。

请记住,“ANSI”不是字符串编码。这个术语有时被Windows系统用来(错误地!)引用系统的本机字符串编码,在英语系统上通常是Windows-1252(类似于ISO-8859-1),但可能因语言环境而异。

  

该值的strlen应为1.不是2.

要让strlen()以字符(而不是以字节为单位)返回长度,您需要激活PHP的multibyte function overloading,这是mbstring扩展名的一项功能,或者转换字符串使用iconv进行单字节字符串编码(这将是一个有损过程)。

如果没有mbstring,iconv或类似的东西,就无法执行此转换。