php+new+mysqli+utf+8,MySQL和PHP:utf-8带有西里尔字符
生活随笔
收集整理的這篇文章主要介紹了
php+new+mysqli+utf+8,MySQL和PHP:utf-8带有西里尔字符
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
HUH函數
你在這里混合API,mysql_*和mysqli_*不會混在一起。你應該堅持mysqli_(看起來你無論如何都是),mysql_*函數被棄用,并在PHP 7中完全刪除。你的實際問題是某個地方的字符集問題。這里有幾個指針,可以幫助您為您的應用程序獲得正確的字符集。這套最開發PHP/MySQL應用程序時所面臨的一般問題。全整個應用程序的屬性必須設置為utf-8。將文檔保存為UTF-8w/o BOM(如果您使用的是記事本+,它是Format?->?Convert to UTF-8 w/o BOM)PHP和HTML中的標題應該設置為UTF-8。HTML(內部)
(標簽):PHP(在文件頂部,在任何輸出之前):header('Content-Type:?text/html;?charset=utf-8');連接到數據庫后,將連接對象的字符集設置為utf-8,如下所示(在連接之后)mysqli_set_charset($conn,?"utf8");?/*?Procedural?approach?*/$conn->set_charset("utf8");????????/*?Object-oriented?approach?*/這是為了mysqli_*,也有類似的mysql_*和PDO(見這個答案的底部)。此外,請確保數據庫和表設置為UTF-8,您可以這樣做:ALTER?DATABASE?databasename?CHARACTER?SET?utf8?COLLATE?utf8_unicode_ci;ALTER?TABLE?tablename?CONVERT?TO?CHARACTER?SET?utf8?COLLATE?utf8_unicode_ci;(任何已經存儲的數據都不會轉換成適當的字符集,因此您需要使用干凈的數據庫來完成這一操作,或者在出現字符中斷時更新數據)。如果你用json_encode(),您可能需要應用JSON_UNESCAPED_UNICODE標志,否則它將特殊字符轉換為它們的十六進制等價物。記住一切在整個代碼管道中,需要設置為UFT-8,否則應用程序中可能會出現字符中斷。除了這個列表之外,可能還有一些函數具有指定字符集的特定參數。手冊會告訴你這一點(一個例子是htmlspecialchars()).對于多字節字符也有一些特殊的函數,例如:strtolower()不會降低多字節字符,因為您必須使用mb_strtolower(),看這個現場演示.附注1:注意到它在某個地方被注明為utf-8(用破折號),在某個地方utf8(沒有它)。重要的是,您知道什么時候使用它,因為它們通常是不可互換的。例如,HTML和PHP希望utf-8,但MySQL沒有。附注2:在MySQL中,“字符集”和“排序規則”不是一回事,請參閱編碼和校對的區別?..不過,兩者都應該設置為utf-8;一般來說,排序應該是utf8_general_ci或utf8_unicode_ci,見將軍?箱子?Unicode?.附注3:如果使用的是emojis,則需要使用utf8mb4字符集而不是標準utf8,無論是在數據庫中還是在連接中。HTML和PHP只會有UTF-8.設置UTF-8mysql_和PDOPDO:這是在對象的DSN中完成的。注意charset屬性,$pdo?=?new?PDO("mysql:host=localhost;dbname=database;charset=utf8",?"user",?"pass");mysql_*這非常類似于mysqli_*,但它不以連接對象作為第一個參數。mysql_set_charset('utf8');總結
以上是生活随笔為你收集整理的php+new+mysqli+utf+8,MySQL和PHP:utf-8带有西里尔字符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle监听启动命令6,[转] or
- 下一篇: mysql 执行sql error 2,