代码之家  ›  专栏  ›  技术社区  ›  Alexander_F

用JS和PHP进行特殊字符转义

  •  0
  • Alexander_F  · 技术社区  · 14 年前

    我的应用程序从一个输入字段获取文本,然后通过Ajax将其发布到一个PHP文件中,以将其保存到数据库中。

    var title = encodeURIComponent($('#title').val());
    

    如果我转义()标题,一切正常,但“+”字符有问题。所以我使用了encodeuricomponent()。

    现在我遇到了一个像“_¶”“_·”“_¼”这样的德语特殊字符的问题,它们将像crypdet一样显示……

    有什么办法可以解决这个问题吗?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  1
  •   Pascal MARTIN    14 年前

    我想这与编码有关:您的HTML页面可能使用UTF-8,特殊字符的编码方式如下:

    >>> encodeURIComponent('ö');
    "%C3%B6"
    

    当您的php页面收到这个消息时,它必须知道它是utf-8,并将其作为utf-8处理——这意味着服务器端的所有内容都必须使用utf-8:

    • PHP代码必须使用能够处理多字节字符的函数
    • 数据库(db,tables,columns,…)必须使用utf-8存储数据。
    • 生成HTML页面时,还需要指出它是UTF-8,…


    例如,如果您正在使用 var_dump() 在PHP方面,为了显示从客户机发送的内容,不要忘记指出生成的页面是UTF-8格式的,如下所示:

    header('Content-type: text/html; charset=UTF-8');
    

    否则,浏览器将使用它的默认字符集——这不一定是 正确的一个 可能会显示垃圾。

        2
  •  0
  •   jantimon    14 年前

    你可以使用 escape("AbcÄüö") 你会得到“abc%c4%fc%f6”

    在PHP中,您可以使用 urldecode($myValue) 再次获得“abc_¶”