簡體   English   中英

土耳其語字符的MySQL編碼問題

[英]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.

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