当添加诸如?key =é的get参数时,PHP会立即将该值转换为UTF8。 我的脚本不是UTF8,我必须通过$ _GET ['key']获取ISO-8859-1中的数据
该值的strlen应为1.不是2.
如何在不使用mb或iconv等依赖项的情况下在非UTF8中获取该数据。
答案 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或类似的东西,就无法执行此转换。