2012-03-09 116 views
0

我试图从mysql返回一些特定的文本到textarea中。现在这个从mysql返回的文本有Textarea不显示来自mysql的希伯来文文本

collation=utf8_unicode_ci 

和字符集是通过在我的PHP文件中添加此行来设置的。

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

无法找出问题在这里。一切看起来都不错,但textarea为什么不显示希伯来文?相反,它显示“???????” - 问号。

谢谢。

+0

你的mysql连接设置为UTF8(SET NAMES'uft8')吗?你的HTML文档是用UTF-8编码的吗? – Thorsten 2012-03-09 13:46:35

+0

对不起,我不知道如何设置一个MySQL连接到utf8。 请您澄清一下吗? – Prateek 2012-03-09 13:50:31

+0

连接到数据库之后,您的第一个查询应该是'SET NAMES'uft8'' – Thorsten 2012-03-09 13:51:43

回答

0

在数据录入或检索期间,必须将MySQL配置为接受unicode(UTF-8)数据。有许多方式,你可以做到这一点

  1. 将这一行上的数据库连接部分

    mysql_set_charset('utf8',$link); //$link is your connection identifier 
    
  2. 运行charset utf8上CLI

  3. 使用SET NAMES 'utf8'作为第一个数据库查询

此外,在输出这样的数据的同时,还应该配置html来理解unicode字符。使用

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

在显示页面的顶部。

+0

放入mysql_set_charset后显示的字符看起来像 § × × × × § | ¢ , – Prateek 2012-03-09 14:17:12

+0

@Prateek,meta标签应该是正确的。使用这个''在页面顶部 – Starx 2012-03-09 14:23:27

+0

Ohh right。谢啦。 – Prateek 2012-03-09 14:45:45

0

试试这个设置。

// encode web page 'utf-8' which holds the input form 
<!DOCTYPE html> 
<html lang="en"><head><meta charset="utf-8"> 

// Form submit from webpage 
$text = stripslashes($_POST['text']); 

// connect to database   
$db = mysql_select_db("$my_databasename",$conn) 
    or die("ERR; Database"); 

// setup UTF-8 on pipe 
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn); 

mysql_query("SET NAMES 'UTF8'"); 

$text = mysql_real_escape_string($text); 

// insert to mysql here 

记得要编码显示/返回mysql输出的网页。默认情况下,在所有网页上声明utf-8编码是一种很好的做法,除非您有其他理由不这样做。