我有一个很大的文本区域,可以写出文字。
<textarea class="textarea"></textarea>
我正在尝试将纯文本(任何人类语言)存储到数据库(文本字段)中。
问题:当我从其他网站复制某些文字时,某些字符作为unicode返回,例如’
变为%u2019
(而´
来自我自己的键盘´
}})。我认为这是因为它是一种不同的文本样式/格式。
在此之后有mysqli_real_escape_string,但到目前为止这似乎工作正常。
问题:如何更换此unicode或避免这样的输入?我可能忘了指定文本格式(在标题中?)。
答案 0 :(得分:2)
如果您确定传递给数据库连接的数据是unicode(并且尚未转义等),那么您的问题可能出在数据库驱动程序本身。
确保将其设置为UTF-8
。
UTF-8
编码方式发送数据(例如,对于PDO:$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf-8", $dbUser, $dbPass);
。请注意charset
部分。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