【问题标题】:Data in MySQL database doesn't show correctly in websiteMySQL 数据库中的数据无法在网站中正确显示
【发布时间】:2013-09-05 20:33:02
【问题描述】:

我正在尝试将一个英文网站翻译成波斯语。我面临的问题是:

  1. 网站正在加载拉丁 Unicode,所以我不得不将字符集更改为 utf-8,以便内容以波斯语正确显示
  2. MySQL 数据库中的数据在网站中未正确显示可能是 Unicode 问题的原因

我做了什么:

<?php ini_set('default_charset','utf-8'); header('Content-type: text/html; charset=utf-8'); ?>

这样,问题 #1 已修复

但是对于第 2 个问题,我仍然面临这个问题,虽然我已经将表格更改为使用 utf 8 ,但问题仍然存在。我很高兴看到有人可以帮助我解决这个问题。 函数 bbcode ($str) { //$str = htmlentities($str);

$token = array(
            "'\[b\](.*?)\[/b\]'is",                                  
            '/\[i\](.*?)\[\/i\]/is',                                
            '/\[u\](.*?)\[\/u\]/is',                                
            '/\[url\=(.*?)\](.*?)\[\/url\]/is',                         
            '/\[url\](.*?)\[\/url\]/is',    
            '/\[img\](.*?)\[\/img\]/is',                            
            '/\[mail\=(.*?)\](.*?)\[\/mail\]/is',                    
            '/\[mail\](.*?)\[\/mail\]/is',                            
            '/\[font\=(.*?)\](.*?)\[\/font\]/is',                    
            '/\[size\=(.*?)\](.*?)\[\/size\]/is',                    
            '/\[color\=(.*?)\](.*?)\[\/color\]/is',   
            "':big_smile:'is",  
            "':cool:'is", 
            "':hmm:'is",
            "':lol:'is",  
            "':mad:'is",
            "':neutral:'is",
            "':roll:'is",
            "':sad:'is",
            "':smile:'is",
            "':tongue:'is",
            "':wink:'is",
            "':yikes:'is", 
            "':bull:'is", 
            '/\[item\=(.*?)\](.*?)\[\/item\]/is', 
            '/\[spell\=(.*?)\](.*?)\[\/spell\]/is', 
            "':warrior:'is",
            "':paladin:'is",
            "':hunter:'is",
            "':rogue:'is",
            "':priest:'is",
            "':dk:'is",
            "':shaman:'is",
            "':mage:'is",
            "':warlock:'is",
            "':druid:'is",
            "'\[ul\](.*?)\[/ul\]'is",
            "'\[ol\](.*?)\[/ol\]'is",
            "'\[li\](.*?)\[/li\]'is",
            );    

提前感谢

【问题讨论】:

  • 确保你的 character setcollations 的数据库和表设置为 utf8_general 这样的东西
  • UTF-8 all the way through的可能重复

标签: php mysql unicode utf-8


【解决方案1】:

抱歉,我的回答不够清楚。我快睡着了。数据库是空的,所以我不需要转换任何东西,但是当我向其中插入数据时,数据显示不正确。顺便说一句,我不擅长 php 或 mysql;我正在阅读这些文章和建议几个小时,我只是越来越困惑。你能告诉我应该在哪里输入代码以及输入什么代码,

$link = mysql_connect("localhost","UserName","Password") or die(mysql_error());
mysql_set_charset("utf8",$link);
mysql_select_db("DataBase Name") or die(mysql_error());

我想我从这些文章中发现的事情是在服务器尝试连接到数据库时将mysql_set_charset("utf8",$link) 部分添加到上面的代码中,但我已经尝试过了,但它不起作用。我的网站使用包括这样的:

include("../../config/config.php");
$connect = mysql_connect("$db_host", "$db_user", "$db_pass")or die(mysql_error());
mysql_set_charset("utf8",$link);

【讨论】:

  • 首先,您需要将上面的$link 更改为$connect。您还需要确保您的 HTML 中也包含 &lt;meta charset="utf-8"&gt;,否则它可能无法正常工作。
  • 我知道,这里的函数正在调用另一个函数(描述 $db 的那个,在那个函数中我添加了这两行:mysql_query("SET NAMES 'utf8'"); mysql_query(" SET CHARACTER SET utf8"); 但是在数据库写入的问题仍然存在,但它正确读取数据库
  • 我也,我已将所需的元标记添加到我的标题中,并且网站在波斯语中加载得非常好,但问题在于脚本保存和读取数据库中的数据,脚本甚至正在读取数据我手动输入数据库完全没问题,但是他们将数据保存到数据库中为 latin1 所以当我在例如shoutbox模块中输入波斯语内容时,它会将数据保存到数据库中为 سÙ?ا&Ugrave ;?
  • 哦,它将数据保存为 HTML 转义?这不仅仅是字符集错误。你的代码中有没有对htmlentities 的调用?
  • 哇!是的,我有函数 page($value) { $page = mysql_real_escape_string(stripslashes(htmlentities($value)));返回$页面; } 函数条($value){ $value = mysql_real_escape_string(stripslashes(htmlentities($value)));返回$值; }
【解决方案2】:

假设您已将表中的数据正确转换为 UTF-8(仅更改字符集是不够的),您可能会遇到连接未设置为 UTF-8 的问题。看看SET NAMES,更具体地说是this question

如果您不确定是否已将数据转换为 UTF-8,我会查看 this questionthis Wordpress article 并确保您已按照步骤操作。

【讨论】:

  • 事实是表格是空的,我没有要转换的数据
  • 如果表格是空的,它们中的数据如何在您的网站上显示不正确?
  • 我想我在下面的答案中已经尽我所能解释了
猜你喜欢
  • 2017-07-15
  • 1970-01-01
  • 2019-04-02
  • 2019-07-24
  • 1970-01-01
  • 2014-04-27
  • 2013-10-26
  • 2018-06-13
  • 2018-07-05
相关资源
最近更新 更多