javascript,mysql数据库和转义'怪异'字符

时间:2010-09-09 07:35:03

标签: javascript mysql utf-8 character-encoding escaping

在我的网站上,访问者可以进行一些内联​​编辑。我使用ajax与MySQL数据库和PHP。我希望在网站上使用荷兰语。

我的挑战是让字符编码运行良好。

我可以使用建议:

  • 数据库(我使用utf-8?latin1_swedish_ci)
  • 数据库中的表格(我更愿意将它们与数据库类似。)
  • 在ajax调用中使用转义(x = escape(x);)
  • 网页字符集(UTF-8?ISO-something?)
  • 这一切如何一起工作。

我使用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 个答案:

答案 0 :(得分:1)

  

它显示如下:网页上的R g。

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

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

只有<meta>标记是不够的。 webbrowser不使用它。重要的是响应头。顺便说一下,Javascript的escape()函数是deprecated

另见:

答案 1 :(得分:0)

只需使用UTF-8即可,通常只会有效。