簡體   English   中英

phpMyAdmin中的拉丁字符,帶有UTF-8排序規則

[英]Latin characters in phpMyAdmin with UTF-8 collation

我的網站使用:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

而這個元:

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

我在phpMyAdmin中創建了我的數據庫和表,確保所有內容都設置為utf8_unicode_ci(表,字段,數據庫),甚至連接排序規則。

當我使用PHP制作的標准表單將一些拉丁字符(重音符號,ñ和類似的東西)插入到數據庫中時,它工作正常,我可以在我的網站中顯示保存的數據沒問題。 但是,如果我去phpMyAdmin,所有拉丁字符都搞砸了,類似於ññ。

如果我嘗試在phpMyAdmin中修復該數據,那么我的網站會錯誤地顯示數據,並帶有奇怪的符號 。

在這個世界上我做錯了什么? 我一直在努力工作幾個小時而沒有成功。

謝謝你們!

正如@Artefacto所說,這可能是phpMyAdmin的本地問題。

如果phpMyAdmin沒問題(即設置為UTF-8)並且數據仍然顯示奇怪,那么看看你的數據庫連接是否也使用UTF-8?

mysql_query("SET NAMES utf8") 

(或者你用作數據庫的任何東西)如果不是,可能會有所幫助。

mysql_query(“SET NAMES utf8”)解決了我的問題。

問題:在phpMyAdmin中正確顯示字符,在HTML / PHP中顯示錯誤。 人物:â,î等

標題是好的(utf8),phpmyadmin以正確的形式顯示內容,但網站不斷顯示奇怪的問號字符(在黑鑽石字符內)。

HTML代碼:

<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

解決方案:我已經在php中添加(在任何其他查詢之前):

mysql_query("SET NAMES utf8");

其他原因可能導致這種行為; 這只是解決方案的一部分。 您可能需要檢查內容類型,Web服務器配置(httpd.conf),html lang / dir,charset等。但是,黑色菱形中的問號似乎更具體到此問題/解決方案,在其他情況下是顯示2-3個奇怪的字符而不是你想要的字符。

如果phpMyAdmin顯示ñññ而不是ñññ ,那是因為它將UTF-8字節流解釋為ISO-8859-1。 所以你的數據庫內容可能是正確的,phpMyAdmin只是以錯誤的方式顯示它們。

我不熟悉該應用程序,但您可以強制瀏覽器將該頁面讀取為UTF-8(通常為View> Encoding> UTF-8)。

對於Scuzzu的問題,有幾種方法:

http://www.mysqlperformanceblog.com/2007/12/18/fixing-column-encoding-mess-in-mysql/

我會有八個不同任務的鏈接,但這個網站阻止我保存它們...

“作為垃圾郵件防范機制,新用戶最多只能發布一個超鏈接”

1-編輯文件:

my.ini(MsWindos)
my.cnf(GNU / linux)

2-查找[mysqld]條目並追加:

  character-set-server = utf8
  skip-character-set-client-handshake

整個視圖應如下所示:

[mysqld]
  port=3306
  character-set-server = utf8
  skip-character-set-client-handshake

3-重啟MySQL服務!

如果phpMyAdmin沒問題(即設置為UTF-8)並且數據仍然顯示奇怪,那么看看你的數據庫連接是否也使用UTF-8?

只需設置mysql_query("SET NAMES utf8"); mysql_connect行之后:

$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
    mysql_query("SET NAMES utf8");

我遇到了同樣的問題,終於找到了一種通過PHP函數mysqli_set_charset檢查和更改排序規則的優雅方法。 以下代碼必須包含在$conn檢查和$sql查詢之間:

if (!mysqli_set_charset($conn, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($conn)); //optional row
    die();
}

我在這里找到了解決方案: http//php.net/manual/en/mysqli.set-charset.php

做了mysql_query("SET names 'utf8';"); 您還需要轉到mySQL並將排序規則定義為UTF-8! 這應該可以解決您的問題。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM