如何防止将智能引号符号写入数据库?

时间:2013-10-11 17:19:46

标签: php html mysql

我使用这个html将用户输入发送到我的数据库:

<textarea name="description" id="description" cols="30" rows="15"><?php echo $description; ?></textarea>

我用$description = $_POST['description'];解析它并将其插入到我的Mysql数据库中INSERT INTO

当我查看数据库描述中的记录时:“This is one of those books that you don’t want to put down …†Romantic Times

应该是:“This is one of those books that you don’t want to put down …” Romantic Times

问题:如何将智能引号和省略号(...)保存到我的数据库而不将它们转换为乱码?

解决:我发现对我有用的解决方案是将我的html页面改为UTF-8,因此记录将在页面上正确显示。该记录仍然包含奇怪的字符。这是html代码:meta http-equiv =“Content-Type”content =“text / html; charset = utf-8无处不在”

我在PHP页面中也使用了ini_set('default_charset', 'utf-8');,现在数据库中有正确的文本,现在有奇怪的字符。

1 个答案:

答案 0 :(得分:2)

您应该将CHARACTER SET = utf8用于所有内容:

  • MySQL数据库定义。

    CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATION utf8_general_ci;
    
  • MySQL表定义。

    CREATE TABLE mytable ( ... ) CHARACTER SET = utf8 COLLATION utf8_general_ci;
    
  • MySQL会话。

    SET NAMES utf8;
    
  • Apache虚拟主机设置。

    AddDefaultCharset utf-8
    
  • HTML演示文稿。

    Content-Type: text/html; charset=utf-8
    

更多资源:

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) 作者:Joel Spolsky

Ligaya Turmelle的

Character Sets Suck