簡體   English   中英

雙UTF-8編碼,但是為什么呢? PHP/MySQL

[英]Double UTF-8 encoding, but why? PHP/MySQL

我有一些 forms,將一些數據插入到 MySQL 數據庫中,並且由於某種原因,字符得到了雙 utf-8 編碼。 你在我網站的前端看不到它,但在后端你可以看到,如果我查看來自 phpmyadmin 的數據,它是雙重編碼的。

此外,要顯示從 phpmyadmin 輸入的數據,我必須對其進行utf8_encode

如果我在將數據放入數據庫之前對我的數據使用uft8_decode() ,它可以工作,但是我必須再次使用utf8_encode()才能正確顯示我的數據,我想找到一個更好的解決方案來重新編寫我的大部分代碼。

我要處理的字符是丹麥語æ、ø 和 å 字符。

I have every setting i can find in php.ini set to utf-8, every thing i can find in phpmyadmin to utf8, html meta tag set to utf-8, and still i have this error to deal with.

所以我的問題是,有誰知道為什么會發生這種情況,或者我該如何解決?...

更新:在運行 Jako 建議的 mysql 代碼后,來自前端的數據在數據庫的后端被正確編碼,但我仍然需要運行utf8_encode()才能在前端正確顯示數據-結束了,有什么想法嗎?...

更新 2:同樣,在運行這個問題的答案的代碼后,我仍然遇到問題,編碼現在打開和關閉 utf8,我懷疑 phpmyadmin 以某種方式重置編碼。 我找到了一種新的做事方式,並且可以完美運行,如下面的回答中所述...

我過去遇到過類似的問題,這對我有用。

mysql_query("SET names UTF8");

好的,我找到了答案,:我搜索了更多,(已經這樣做了幾個小時)並發現了這個問題: 是否使用“SET NAMES”

使用該問題的答案,我運行了這個查詢:

mysql_query("SET character_set_client = UTF8");
mysql_query("SET character_set_results = UTF8");
mysql_query("SET character_set_connection = UTF8");
mysql_query("SET names UTF8");

就是這樣,它現在在我所有的 php 腳本上都可以正常工作。 仍然感謝 Jako 以正確的方式引導我。 ;)

更新:好的,由於編碼打開和關閉並且設置沒有保持這種狀態,我找到了一個有效的新解決方案。 我將mysql_set_charset()添加到我的連接腳本中:

mysql_set_charset("UTF8");

它每次都為我提供來自數據庫的正確數據並插入正確的數據,所以這只是一行代碼。

暫無
暫無

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

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