朋友您好我知道这个问题已经在stackoverflow中但是我搜索所有问题的答案但不是我的搜索。我的问题是mysql和php土耳其字符问题。
我正在使用此<meta>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
但土耳其人看起来像这样:üÅüdü
我尝试像这样的数据库连接:
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'root');
define('DB_DATABASE', 'test');
mysql_query("SET NAMES UTF8");
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());
?>
但土耳其人性格问题仍在继续。
我的phpmyadmin 3表总和整理: utf8_general_ci
消息表排序规则: latin1_swedish_ci
<?php
$Wall = new Wall_Updates();
if(isSet($_POST['update']))
{
$update=mysql_real_escape_string($_POST['update']);
$data=$Wall->Insert_Update($id,$update);
if($data)
{
$msg_id=$data['msg_id'];
$message=tolink(htmlentities($data['message']));
$time=$data['created'];
$id=$data['uid_fk'];
$name=$data['name'];
$face=$Wall->Gravatar($id);
//$commentsarray=$Wall->Comments($msg_id);
?>
以这种方式截屏链接click 我怎样才能解决土耳其人的问题。
$.ajax({
type: "POST",
url: "comment_ajax.php",
data: dataString,
cache: false,
success: function(html){
$("#commentload"+ID).append(html);
$("#ctextarea"+ID).val('');
$("#ctextarea"+ID).focus();
}
});
}
return false;
});
答案 0 :(得分:2)
你能试试吗
mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
@mysql_select_db(DB_DATABASE) or die( "Unable to select database");
mysql_set_charset('utf8');
和我一起为希腊工作
答案 1 :(得分:1)
根据您的screenshot判断,数据库包含HTML编码实体,这意味着在将数据保存到数据库之前的某个时候,您正在通过对其应用htmlentities
来修改数据。
不幸的是,如果您的PHP版本为< 5.4
,则可选参数$encoding
不会默认为UTF-8
,因此它会将您的字符串视为ASCII。
由于这个多字节字符在保存之前被分成单字节字符和HTML编码。
从数据库中检索数据时,HTML源代码将包含HTML实体(例如Ã
),但您的浏览器将以您看到它们的方式呈现它们。
不使用htmlentities
应该解决您的问题,建议您在输出数据之前尝试使用html_entity_decode
(不确定它是否会造成比修复更多的麻烦)。
查看网站的HTML源代码,并检查从DB中提取的文本中是否有任何实体(例如:Ã
)。
答案 2 :(得分:1)
更改此内容:
<?php
$Wall = new Wall_Updates();
if(isSet($_POST['update']))
{
$update=mysql_real_escape_string($_POST['update']);
$data=$Wall->Insert_Update($id,$update);
if($data)
{
....
?>
到此:
<?php
$Wall = new Wall_Updates();
if(isSet($_POST['update']))
{
$update=html_entity_decode(mysql_real_escape_string($_POST['update']));
$data=$Wall->Insert_Update($id,$update);
if($data)
{
....
?>
答案 3 :(得分:0)
最好将表的编码更改为utf8
并连接到mysql,如下所示:
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());
mysql_query('set names "utf8" collate "utf8_turkish_ci" ');
答案 4 :(得分:0)
将此行放在$ database变量行下面并尝试
mysql_set_charset('utf8',$database);
在插入此类数据时,您必须在查询N
N('$yourvalue')
和您的值
答案 5 :(得分:0)
我有同样的问题并且像那样解决了
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "tamirat";
$co = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());
mysqli_set_charset($co, 'utf8');
首先编写连接内容并编写&#39; utf8&#39;。我希望这会有所帮助。