【问题标题】:Storing pure text from a textarea to a MySQL database correctly将纯文本从 textarea 正确存储到 MySQL 数据库
【发布时间】:2013-03-18 14:26:09
【问题描述】:

我有一个很大的 textarea 可以写文字。

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

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

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

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

问题:如何替换这个 unicode 或避免这样的输入?我可能忘记指定有关文本格式的内容(在标题中?)。

【问题讨论】:

  • 在标题中使用 utf-8 编码
  • @Deepu,他无法将 unicode 文本保存到数据库中,而不是在页面上显示。
  • 实际上,当我回显 POST['textareaname'] (在存储到数据库之前)它已经在 unicode %u2019 中。我相信这不应该吗?标头设置为 UTF-8。它只发生在某种格式的字符上。例如这个字符:' 其他一些字符只返回一个 ?签名。

标签: php html mysql textarea


【解决方案1】:

如果您确定传递给数据库连接的数据是 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 兼容编码。

【讨论】:

    【解决方案2】:

    使用: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">
    

    【讨论】:

      【解决方案3】:

      在你的服务器上运行:

      SHOW VARIABLES LIKE 'character_set%';
      

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

      看看:Configuring MySQL To Use UTF-8

      【讨论】:

        猜你喜欢
        • 2017-11-29
        • 1970-01-01
        • 2010-10-02
        • 2013-12-15
        • 1970-01-01
        • 1970-01-01
        • 2013-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多