PHP字符编码问题

时间:2013-02-14 16:45:10

标签: php wordpress character-encoding

当我从我的Word Press帖子中获取标题代码并将其作为电子邮件传递时,标点符号会有点受损。

例如,"TAMAGOTCHI P’S LOVE & MELODY SET"标记为"TAMAGOTCHI P’S LOVE & MELODY SET"

我如何阻止这种想法?

如果您需要查看我目前使用的特定代码,请告诉我。 (我不确定这是WordPress问题还是PHP问题。

修改 会发生什么是通过查询字符串将此标题传递给表单。然后,当提交表单时,我从表单字段中获取字符串并通过电子邮件发送。

所以我想在将其传递到表单字段之前,或者在我发送电子邮件之前,我需要解码html。

编辑2 很奇怪,所以我仔细查看代码,在将值传递给表单字段之前,我已经在做一个urldecode

jQuery('#product_name').val("<?php echo urldecode(strip_tags($_GET['pname'])); ?>

序列化时(对于ajax formhandler)是否会发生一些默认编码

    var dataString = $(this).serialize();

编辑3 好的事实证明代码更复杂。标题也会在它触及表单之前传递给某种wordpress会话。我会弄明白我需要把urldecode放到哪里。谢谢!

2 个答案:

答案 0 :(得分:1)

这是一个WordPress“功能”我无法做到。

这是一种用于替换花式引号(或其他实体)的简单方法:

$title = get_the_title( get_the_ID() );
$title = str_replace( '&#8217', "'", $title );
echo $title;

如果您希望在整个网站中使用相同的去实体功能,我们可以通过挂钩the_title来更深入地集成。此代码块将属于主题的functions.php文件。

function reform_title($title, $id) {
    $title = str_replace( '&#8217', "'", $title );
    return $title;
}
add_filter('the_title', 'reform_title', 10, 2);

答案 1 :(得分:0)

我对wordpress不太确定,但问题本身就是它的文本以URLENCODE而不是UTF-8或其他编码形式出现。

您有两个选择

  1. 当您收到文本时,您永远不会将其恢复为正常编码(这很奇怪,因为当您访问$ _GET或$ _POST变量时,通常会通过php对其进行解码)

  2. 您正在使用urlencode()函数解析消息。