0

我正在尝试从数据库中提取文本。在数据库中显示为“♦”没有问题。

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

例如:

♦ 我们需要付钱给你 ♦</p>

将显示:

? 我们需要付钱给你吗?

我将数据库结构设置为 utf8-bin,因为拉丁文没有正确保存它们。我已经环顾四周,阅读文章数小时,但在任何地方都找不到答案。必须有一种方法让它以正确的方式从数据库中提取。我可以插入它但无法检索它,这是没有意义的。

感谢所有帮助。

4

5 回答 5

0

在你的 php 文件中试试这个:

echo utf8_encode(text) or utf8_decode(text)

这在你的 html 头中:

<meta http-equiv="content-type" content="text/html; charset=utf-8">
于 2013-04-10T18:55:51.150 回答
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" >
于 2013-04-10T19:01:14.840 回答
0

您可以使用我在此处给出的答案来检查问题的根源:如何修复“不正确的字符串值”错误?

在您的情况下,HTML 很可能不是 UTF-8 编码的。根据您使用的 HTML 版本,其中之一将满足您的需求:http ://en.wikipedia.org/wiki/Character_encodings_in_HTML

剩下一件事:检查您的 IDE/Editor 是否也设置为以 UTF-8 存储文件

于 2013-04-10T19:03:44.643 回答
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">
于 2013-04-10T19:04:38.710 回答
0

好吧,你需要决定你将在你的应用程序上使用什么编码,恕我直言 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

于 2013-04-10T19:09:49.103 回答