0

我想将所有 £ 替换为其 HTML 代码 £ => £ 因为它显示为 ? 在钻石中。

我正在使用以下代码,但它什么也没做。

<?php
    include ("config.php");

    $get_id = mysql_real_escape_string($_GET['id']);
    $page_get = mysql_query("SELECT * FROM contents_page WHERE `id` = '$get_id'");
    while($page_row = mysql_fetch_assoc($page_get)) {
        $page_row["Page_Content"] = str_replace('£','&pound;',$page_row[Page_Content]);
        $smarty->assign('page_title',       $page_row['Page_Title']);
        $smarty->assign('page_content',     $page_row['Page_Content']);     
    }

    $smarty->display('page.tpl');
?>

我正在使用 str_replace() 但没有发生任何事情,就像它看不到 £

4

5 回答 5

1

将此添加到页面的 head 标记中:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
于 2012-09-03T17:38:02.563 回答
1

我自己有一个编码问题。去数据库看看数据有没有乱码。如果不是,则在连接到数据库之前设置您的连接属性,如 SET CHAR UTF8。

$link1 = mysql_connect('localhost','user1','pass1',TRUE); 


mysql_selectdb('db1',$link1); 

mysql_set_charset('utf8',$link2);

另一种解决方案是在输入进入数据库之前查看输入的编码内容,然后将字符集更改为

mysql_set_charset('latin1',$link2);

例如。

无论如何,我会做什么,我仍然会将我的字符设置为 utf-8 ,将结果输出到页面..看看这个字符是否真的是一个磅音,如果它是一个不同的符号,我会把它放在字符串替换函数而不是井号

于 2012-09-03T18:08:19.233 回答
0

假设磅符号不在标准 ascii 集中,您可能需要类似自我实现的 mb_str_replace() 之类的东西。

该页面上有多个示例实现:http: //php.net/manual/en/ref.mbstring.php

我希望这就是你所需要的,如果你必须完全实现 unicode,它会变得非常复杂。如果使用 mb_str_replace 贡献的代码不起作用,您可能可以避免这种情况,您可能必须在 php ini 中打开 unicode 功能,以便 php 甚至可以识别您要替换的字符是 unicode一。

于 2012-09-03T17:37:32.283 回答
0

str_replace对您不起作用,因为针和干草堆的编码不同,因此字符不匹配。事实上,编码是你唯一需要关心的问题,你不需要替换任何东西。有关编码需要考虑的详细信息,请参阅http://kunststube.net/frontback 。

有关更大的图片背景,另请参阅每个程序员绝对、肯定需要了解的关于编码和字符集以使用文本的知识。

于 2012-09-03T17:42:16.897 回答
0
<?php
$link1 = mysql_connect('localhost','user1','pass1',TRUE);

mysql_selectdb('db1',$link1);

mysql_set_charset('utf8',$link1);
?>
于 2012-09-03T18:12:56.373 回答