【问题标题】:special characters when accessing textarea contents in php在 php 中访问 textarea 内容时的特殊字符
【发布时间】:2012-03-13 19:42:18
【问题描述】:

我从表单上的 textarea 输入中获取特殊字符

所以如果我输入下面的文字

菲尔布里克,他的《在海的中心:海洋的悲剧》 Whaleship Essex”讲述了梅尔维尔的现实生活灵感 沉船,轻装他的学识。

当我在 php 中访问它时得到以下信息。

菲尔布里克,他的《在海的中心:海的悲剧》 Whaleship Essex 讲述了现实生活中的灵感 梅尔维尔的沉船,轻描淡写地展现了他的博学。

我在访问文本之前尝试了以下操作,但替换不起作用。这些特殊字符不匹配时我 是复制粘贴代码中的内容还是其他缺少的内容?

$string = htmlspecialchars($_POST["t"]) ;
$string = html_entity_decode($string, ENT_QUOTES, "UTF-8");
$string = str_replace('“', "\"", $string);
$string = str_replace('’', "'", $string);

【问题讨论】:

    标签: php string textarea forms


    【解决方案1】:

    您所看到的可能没有任何问题。您可能不需要使用 htmlentities 更正或其他方式来破坏 $_POST。可能是您正在查看准系统浏览器输出。

    如果您通过使用print_r( $_POST ); die; 之类的东西来调试它,请确保在页面上方的某处您有一个元行将您的字符编码设置为 UTF-8:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    这将确保智能字符(可能是从某处粘贴的)在屏幕上正确呈现。

    完全不相关:好书,顺便说一句。喜欢开始的场景,憔悴的水手囤积成堆的骨头。

    【讨论】:

      【解决方案2】:

      你其实不是普通的单双引号,而是一些花哨的unicode版本: “ ” ’

      试试utf8_decode。顺便说一句,你使用什么编码,Windows-1250

      【讨论】:

      • 如何找到正在使用的编码?我尝试了 utf8_decode 它产生了:Philbrick,谁的?在海洋之心:捕鲸船埃塞克斯的悲剧?讲述了梅尔维尔海难的现实生活灵感,轻描淡写了他的博学。那么现在输出中的特殊字符不同了吗?
      • echo "编码方案是:" . mb_detect_encoding($string);产生 UTF-8
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2011-02-10
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多