代码之家  ›  专栏  ›  技术社区  ›  Kim Alders

javascript、mysql数据库和转义“怪异”字符

  •  1
  • Kim Alders  · 技术社区  · 15 年前

    在我的网站上,访问者可以做一些在线编辑。我将ajax用于mysql数据库和php。我希望在网站上使用荷兰语。

    我的挑战是让字符编码工作良好。

    我可以使用以下建议:

    • 数据库(我使用UTF-8吗?拉丁语(瑞典语)
    • 数据库中的表(我希望它们与数据库类似。)
    • 在Ajax调用中使用的转义(x=escape(x);)
    • 网页字符集(UTF-8?ISO吗?)
    • 这一切是如何一起工作的。

    我使用nicedit作为javascript wysiwyg编辑器。

    当然,我可以解释发生了什么,我想节省什么,如果这有帮助的话,我会,但我认为最好是理解这件事,而不是仅仅试图快速解决它。

    [编辑] 详述:

    我在PHP中使用这些
    $input = stripslashes($input); //(if magic quotes are 'on')
    $input = mysql_real_escape_string($input);
    $input = strip_tags($input, '<strong><em><span><ul><ol><p><a><br><li>');

    在我的HTMLPAGE中:
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    Javascript:
    x = excape(x);

    笪塔巴涩:
    MySQL connection collation: utf8_general_ci
    Table options: DEFAULT CHARSET=utf8

    这是一个例子:

    我输入(内联)单词r_g(在我的Mac上使用'option+u',然后使用'e'。
    我保留了这个词。它在网页上显示如下:r g。
    在数据库中我找到了R_G。

    我打开编辑器,只做了一次保存,它显示:r%ufffdg在数据库和页面上。在那之后,它不再改变了。

    非常感谢您的帮助。
    基姆

    2 回复  |  直到 15 年前
        1
  •  1
  •   BalusC    15 年前

    它在网页上显示如下:r g。

    您需要指示WebBrowser您正在以UTF-8显示网页,并且它应该将其解释为相同的内容。在PHP顶部添加以下内容, 之前 向输出发送任何字符:

    header('Content-Type: text/html; charset=utf-8');
    

    只有 <meta> 标签不够。这不是WebBrowser使用的。重要的是响应头。顺便说一下,javascript的 escape() 函数是 deprecated .

    参见:

        2
  •  0
  •   slikts    15 年前

    只需对所有内容使用UTF-8,通常它只会起作用。