2013-04-10 80 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