1

我一直在开发一个应该能够接受多种语言的标签和搜索查询的 Web 应用程序。这不是要求太多,是吗?

现在,在我的开发 MAMP 服务器上,一切都很好。我添加多语言标签,以我想要的任何语言搜索等。

另一方面,在生产 WAMP 服务器上,多语言字符会带来麻烦。甚至不是一直,只是某些时候,或者某些角色,我还不确定。

发生的情况是他们获得了额外的字符,然后他们的 URL 解码不正确。

两种环境都使用 PHP 5、MySQL 和 Apache。

我的猜测是我在某个地方设置错误。

有任何想法吗?

  • 更新:我现在确定是特定的字母(例如希伯来语 ל,מ א)

  • 更新:易于重现:总是相同的字母得到错误的编码。

  • 内容类型是text/html; charset=utf-8

此外,我进一步指出:
我使用搜索字符串:ליבני
在结果页面上,我看到:

  • 在地址栏中,搜索短语是正确的,正确的 url 编码。
  • 在 HTML 本身中,我看到字符串“ �_יבני ”,即“ %D7_%D7%99%D7%91%D7%A0%D7%99”,这意味着ל已被编码为“ %D7_”,而不是%D7%9C应有的“”。

我真的不知道该往哪里走。
有任何想法吗?任何人?

4

3 回答 3

1

字符集是一个简单的概念。关于它们的令人困惑的事情是,必须正确完成多个级别。如果你在一个地方搞砸了,它通常会出现在一个完全不同的地方。

因此,对您的问题的略微居高临下但也是非常真实的答案是,您需要知道自己在做什么,而不是仅仅用棍子戳它直到看起来还不错。

我推荐以下阅读:

于 2009-02-15T22:33:42.370 回答
0

我建议您使用 UTF-8 进行内部和外部编码。使用AddDefaultCharset指令告诉 Apache 你的默认编码:

AddDefaultCharset utf-8

现在您只需要确保您的应用程序正确处理数据(请参阅default_charset指令)。如果您使用 UTF-8 作为输出,客户端也应该将其用于进一步的请求(URL、表单数据)。

于 2009-02-15T13:55:08.827 回答
0

事实证明,问题出在 PHP 的 parse_url() 中。我猜在某些版本中,在某些平台上, parse_url() 不能正确处理 UTF 字符。它至少又出现在窗户上一次

我现在能够解决它。

感谢大家的时间和关注,Omer。

于 2009-02-24T09:45:35.903 回答