Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复两个web客户端之间的字符串长度编码?_Php_Ios_Utf 8_Nsstring_Nsstringencoding - Fatal编程技术网

Php 如何修复两个web客户端之间的字符串长度编码?

Php 如何修复两个web客户端之间的字符串长度编码?,php,ios,utf-8,nsstring,nsstringencoding,Php,Ios,Utf 8,Nsstring,Nsstringencoding,我正在构建一个iOS应用程序,其中包括向PHP服务器发送数据 我对字符串jeremyö中的重音字符有问题,当从以下地址发送时: PHP var_dump将iOS(使用ASIHTTPRequest)检测为string(7)“jeremyö” PHP var_dump检测到来自Firefox或Chrome的数据为string(8)“jeremyö” 当用作登录时,这会破坏我所有的东西 你对我如何处理这种行为有什么建议吗 PHP部分仅为UTF-8(Drupal 7后端),我不知道在iOS上使用的编

我正在构建一个iOS应用程序,其中包括向PHP服务器发送数据

我对字符串
jeremyö
中的重音字符有问题,当从以下地址发送时:

  • PHP var_dump将iOS(使用ASIHTTPRequest)检测为
    string(7)“jeremyö”
  • PHP var_dump检测到来自Firefox或Chrome的数据为
    string(8)“jeremyö”
当用作登录时,这会破坏我所有的东西

你对我如何处理这种行为有什么建议吗

PHP部分仅为UTF-8(Drupal 7后端),我不知道在iOS上使用的编码,但我猜是UTF-8或者UTF-16

谢谢,
Jérémy

这听起来更像是unicode规范化,然后是编码。在unicode中,像ö这样的字符可以用两种方式表示。它可以是
U+00F6
(带分划的小o),也可以是两个字符:普通o和组合分划(U+0308)

在iOS上,有一些方法,例如NSString的
precomposedStringWithCanonicalMapping
decomposedStringWithCanonicalMapping
等,允许您在这些不同的表示形式之间转换字符串,php中可能有类似的方法


如果您使用这些字符串作为数据库的查询参数,那么您的数据库可能具有控制字符串相等含义的设置(对于mysql,它是排序规则属性)

感谢您的解释。不幸的是,我一直在支持PHP5.2,它没有标准化器类。你可以在iPhone端进行标准化,并检查你的数据库排序设置——你可以完全避免PHP问题。我在iOS端尝试过,但运气不好。我无法处理所有MySQL数据库,因为我的应用程序面向所有Drupal用户:-)