[英]MySQL encoding issue with Turkish characters
我正在使用WAMP服務器。 我將php.ini設置為utf-8,並且還有header('Content-Type: text/xml; charset=utf-8');
在我的php和@mysql_query("SET NAMES utf8");
在我的連接文件中。
MySQL歸類設置為utf8_turkish_ci,當我直接從phpMyAdmin編寫查詢時,土耳其語ç,ş,ö,ğ等顯示正確。 但是,當我嘗試從php表單提交它們時,它們在數據庫中變成了奇怪的字符,但是當我再次使用php編寫它們時,它們會正確顯示。
我的問題是,當我直接從phpMyAdmin輸入查詢時,它們在PHP中無法正確顯示,反之亦然,當我從PHP輸入查詢時,它們在數據庫中無法正確顯示。 我該如何解決?
使用腳本寫入文件時,數據已正確存儲在數據庫中。 這證明當您回顯數據時它們正確顯示。 如果您沒有在phpmyadmin中看到格式正確的數據,則表明該頁面未正確設置為顯示utf-8。
最簡單的檢查方法是Ctrl + U查看phpmyadmin的源代碼並查找:
< meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
它還應顯示:
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_unicode_ci
在打開phpMyAdmin的第一頁。 如果看不到這兩個,請按照以下步驟進行修復:
A)我想到的立即解決方案是更改或強制將瀏覽器的字符編碼轉換為utf-8。 在Mozilla Firefox中,可以通過查看->字符編碼-> Unicode(UTF-8)進行設置。
或B)另一個優雅的解決方案可能是更改phpMyAdmin配置,以便它在Content-Type標頭中發送並設置適當的字符集作為Content-Type:text / html; charset = utf-8。 為此,我們必須編輯在phpMyAdmin的根目錄下找到的config.inc.php文件:
$cfg['DefaultCharset'] = 'utf-8'; and
$cfg['AllowAnywhereRecoding'] = true;
這些配置更改應發送適當的標頭。 無論如何,如果lang cookie已經設置為其他字符集,則不會反映所做的更改。 因此,可能需要清除cookie才能查看更改。
感謝上述解決方案: http : //rajeshanbiah.blogspot.com/2004/12/storing-unicode-texts-in-mysql-with.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.