代码之家  ›  专栏  ›  技术社区  ›  Haim Evgi

php post和非英语语言字符传递为空

  •  1
  • Haim Evgi  · 技术社区  · 14 年前

    我正在用一个搜索选项编程一个希伯来语站点。 (旧站点,此站点的字符集为Windows-1255) 我在Apache2.2中使用php 5.2,在debian5(lenny)中使用 已启用适当的代码页。

    我正在使用post向脚本传递参数。如果我通过 脚本中的英文单词一切正常,但当我使用希伯来语时 没有通过post函数传递任何内容。当我使用echo时 要显示日志,变量为空。

    可能有什么问题?

    P.S.这是一个旧的站点,在php 4和debian4上运行得很好,只出现了问题。 升级到php5+debian5之后。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Ricket    14 年前

    尝试“编程注意事项”下的提示 this article :

    *  Explicit use of UTF-8, marked with
          o "mb_language('uni'); mb_internal_encoding('UTF-8');" at the top of your scripts
          o Content-type: text/html; charset=utf-8 in the HTTP header, by way of .htaccess, header() or Web server configuration
          o <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> and <orm accept-charset = "utf-8"> in HTML markup
          o CREATE DATABASE ... DEFAULT CHARACTER SET utf8 COLLATE utf8 ... ENGINE ... CHARSET=utf8 COLLATE=utf8_unicode_ci is a typical sequence for a MySQL instance, with comparable expressions for other databases
          o SET NAMES 'utf8' COLLATE 'utf8_unicode_ci' is a valuable directive for PHP to send MySQL immediately after connecting
          o In php.ini, assign default_charset = UTF-8
    * Replacement of string functions, such as strlen and strtlower, with mb_strlen and mb_convert_case
    * Replacement of mail and colleagues with mb_send_mail, etc.; while Unicode-aware e-mail is an advanced topic beyond the scope of this introduction, the use of mb_send_mail is a good starting point
    * Use of multibyte regular expressions functions (see Resources)
    

    尤其是在这种情况下,前两个子要点。

        2
  •  1
  •   Haim Evgi    14 年前

    谢谢你们,这是我的错

    问题解决了!

    我们有一个类过滤器,它可以识别php5中的内容。 然后跑

    filter_var($this->source[$var], FILTER_SANITIZE_STRING, (FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH));
    

    这就净化了希伯来文字符后的空白。!