我正在尝试从数据库中提取文本。在数据库中显示为“♦”没有问题。
但是,当我从数据库中提取记录时,它在页面上显示为一个问号(而不是中间有一个白色 ? 的黑框),一个普通的旧“问号结束”问号。
例如:
♦ 我们需要付钱给你 ♦</p>
将显示:
? 我们需要付钱给你吗?
我将数据库结构设置为 utf8-bin,因为拉丁文没有正确保存它们。我已经环顾四周,阅读文章数小时,但在任何地方都找不到答案。必须有一种方法让它以正确的方式从数据库中提取。我可以插入它但无法检索它,这是没有意义的。
感谢所有帮助。
在你的 php 文件中试试这个:
echo utf8_encode(text) or utf8_decode(text)
这在你的 html 头中:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
使用 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" >
您可以使用我在此处给出的答案来检查问题的根源:如何修复“不正确的字符串值”错误?
在您的情况下,HTML 很可能不是 UTF-8 编码的。根据您使用的 HTML 版本,其中之一将满足您的需求:http ://en.wikipedia.org/wiki/Character_encodings_in_HTML
剩下一件事:检查您的 IDE/Editor 是否也设置为以 UTF-8 存储文件
Encode UTF-8 without BOMmysql_set_charset('utf8',$connect)或者
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")如果您使用的是 PDO<head>标签内设置:<meta http-equiv="content-type"
content="text/html; charset=utf-8">好吧,你需要决定你将在你的应用程序上使用什么编码,恕我直言 utf8 是最好的编码,所以你需要让你的 IDE ou Text Editor 只使用 UTF-8 并告诉浏览器你的页面是 UTF-8 使用:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
并使用 PDO 的现代连接方式:
<?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 创建数据库:
CREATE DATABASE "test" CHARACTER SET utf8 COLLATE utf8_general_ci
使用 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