2013-04-10 89 views
0

我试图从数据库中拉出文本。在数据库中,它显示为“♦”,没有问题。MySQL,HTML和PHP字符冲突

但是,当我从数据库中提取记录时,它会在页面上显示为问号(而不是中间有白色的黑框),这是一个普通的“问题结束”问号。

例如:

♦需要我们付出你♦

显示:

?我们需要付钱给你?

我有数据库结构设置为utf8-bin,因为拉丁没有保存它们的权利。我已经做了几个小时的环视,阅读文章,并且无法在任何地方找到答案。必须有一种方法可以正确地从数据库中提取数据。我可以插入它,但无法检索它是没有意义的。

所有帮助表示赞赏。在你的HTML头

echo utf8_encode(text) or utf8_decode(text) 

这:

+0

你的php/html文件是utf8编码的吗? – bestprogrammerintheworld 2013-04-10 18:55:47

+2

将数据库字符集设置为utf-8,并确保您的php版本支持非ascii。另外,请确保页面是UTF-8,标题为Content-Type:text/html; charset = UTF-8' – Amelia 2013-04-10 18:56:03

回答

0
  1. 您的查询之前保存你的PHP文件作为Encode UTF-8 without BOM
  2. 集:mysql_set_charset('utf8',$connect)array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")如果您正在使用PDO
  3. 设置你的<head>标签中:<meta http-equiv="content-type" content="text/html; charset=utf-8">
+1

划痕。我添加了utf8_encode并忘记删除它。它最终显示为应该。你,我的朋友,是救生员。 – 2013-04-10 19:09:11

+0

宾果,哈里,哈哈 – 2013-04-10 19:13:35

0

在你的PHP文件试试这个

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

设定mysql_set_charset的字符集。

bool mysql_set_charset (string $charset [, resource $link_identifier = NULL ]) 

,并确保您的网页内容的字符集是UTF-8

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

那么,你需要决定什么编码,你会在你的应用程序中使用,恕我直言,UTF8是最好的编码,所以你需要让你的IDE欧文本编辑器的工作原理与UTF-8只,并告诉浏览器,你的网页是UTF -8使用:

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

,并用现代的连接方式与PDO:

CREATE DATABASE "test" CHARACTER SET utf8 COLLATE utf8_general_ci 

<?php 
$pdo = new PDO(
    'mysql:host=127.0.0.1;dbname=test', 
    "username", 
    "password", 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 

使用UTF-8创建数据库

创建使用UTF-8表:

CREATE TABLE `test` ( 
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`name` VARCHAR(40) NOT NULL 
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci; 

使用函数utf8_encode和utf8_decode是没有意义的,它会使你的代码不可读。

对不起我的英语,我是巴西人:D