正确地将纯文本从textarea存储到MySQL数据库

时间:2013-03-18 14:26:09

标签: php html mysql textarea

我有一个很大的文本区域,可以写出文字。

 <textarea class="textarea"></textarea>

我正在尝试将纯文本(任何人类语言)存储到数据库(文本字段)中。

问题:当我从其他网站复制某些文字时,某些字符作为unicode返回,例如变为%u2019(而´来自我自己的键盘´ }})。我认为这是因为它是一种不同的文本样式/格式。

在此之后有mysqli_real_escape_string,但到目前为止这似乎工作正常。

问题:如何更换此unicode或避免这样的输入?我可能忘了指定文本格式(在标题中?)。

3 个答案:

答案 0 :(得分:2)

如果您确定传递给数据库连接的数据是unicode(并且尚未转义等),那么您的问题可能出在数据库驱动程序本身。

确保将其设置为UTF-8

清单

  1. 确保进入的数据未转义(撇号,引号等除外)
  2. 确保将数据库驱动程序设置为以UTF-8编码方式发送数据(例如,对于PDO:$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf-8", $dbUser, $dbPass);。请注意charset部分。
  3. 确保将列排序规则设置为UTF-8兼容的编码。

答案 1 :(得分:1)

使用: html_entity_decode

<textarea class="textarea"><?php echo html_entity_decode($text_to_show); ?></textarea>

或者也许:

<textarea class="textarea"><?php echo html_entity_decode($text_to_show, ENT_COMPAT, 'UTF-8'); ?></textarea>

确保有一些utf8数据库,而不是默认的latin1。

此外,如果您使用的是html5 doctype,请不要忘记输入:

<meta charset="utf-8">

答案 2 :(得分:0)

在您的服务器上运行:

SHOW VARIABLES LIKE 'character_set%';

查看您的服务器配置的字符集,如果需要,请将其更改为UTF-8

看看:Configuring MySQL To Use UTF-8