使用PHP从SQL读取utf-8 /希腊字符

时间:2014-01-12 11:46:55

标签: php sql character-encoding phpmyadmin

这是问题所在。

我在SQL中的大多数条目都是希腊语。我使用的整理是utf8_general_ci

如果我使用phpmyAdmin在数据库中手动添加条目,我可以在希腊语中看到该值。但是当我尝试使用php获取该值时,我将带回来????。

这是我的代码:

$result=mysql_query("SELECT name,type,lat,lon FROM map p WHERE p.place='$place' ");


  mysql_set_charset("utf-8");

另一方面,如果我使用php添加这些值:

$query= "INSERT INTO posts(name,title,type,address,url,place) VALUES('$name','$title',$type,'$address','$url','$place')";

mysql_set_charset("utf-8");

在我的php我的管理员中,我看到这样的值:

Στο κέντÏο της γÏαφικής ΑÏάχωβας, το ξενοδοχείο Ευ Ζην Studios & Suites απ

但如果我使用该代码,我可以用希腊文获取它们:

$result=mysql_query("SELECT name,title,type,address,url,place FROM posts p WHERE p.place='$place' ORDER BY p.IdPost LIMIT 50");
  mysql_set_charset("utf-8");

演示代码引用了不同的表,但问题都发生在两者中。

因此,当手动添加它们时,我可以在SQL-phpmyadmin中看到希腊内容,但无法在php中获取它们。

如果我从php添加它们,我看不到添加了什么值,但我可以正常检索它。

理想情况下,我想在phpmyadmin上看希腊语,并在php端读取希腊语(而不是???)。

2 个答案:

答案 0 :(得分:1)

mysql_set_charset("utf8");
  1. MySQL中的charset称为utf8,而不是utf-8
  2. 您需要在之前调用此,然后使用数据库执行任何其他操作,而不是在之后发送查询。此调用告诉MySQL您将发送数据的编码以及查询应返回数据的编码,这需要在您来回发送数据之前发生。

答案 1 :(得分:-1)

在PHP应用程序中,连接到MySQL后,请执行以下一次查询:

mysql_query(“SET NAMES'UTF8'”);