国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

全程使用UTF-8編碼
P粉557957970
P粉557957970 2023-08-27 15:50:39
0
2
612
<p> 我正在設置一個新服務器,并希望在我的 Web 應用程序中完全支持 UTF-8。我過去曾在現(xiàn)有服務器上嘗試過此操作,但似乎總是最終不得不退回到 ISO-8859-1。</p> <p>我到底需要在哪里設置編碼/字符集?我知道我需要配置 Apache、MySQL 和 PHP 來執(zhí)行此操作 - 是否有一些我可以遵循的標準檢查表,或者也許可以對發(fā)生不匹配的位置進行故障排除?</p> <p>這適用于運行 MySQL 5、PHP、5 和 Apache 2 的新 Linux 服務器。</p>
P粉557957970
P粉557957970

全部回復(2)
P粉293341969

我想在 chazomaticus 的出色答案中添加一件事一個>:

也不要忘記 META 標記(像這樣,或者 它的 HTML4 或 XHTML 版本):

這看起來微不足道,但 IE7 之前曾給我?guī)磉^問題。

我做的一切都是正確的;數(shù)據庫、數(shù)據庫連接和Content-Type HTTP標頭都設置為UTF-8,在所有其他瀏覽器中都運行良好,但Internet Explorer仍然堅持使用“西歐”編碼。

原來該頁面缺少 META 標記。添加即可解決問題。

編輯:

W3C 實際上有一個相當大的專門討論 I18N 的部分。他們有許多與此問題相關的文章 - 描述了 HTTP、(X)HTML 和 CSS 方面的內容:

他們建議同時使用 HTTP 標頭和 HTML 元標記(或者在 XHTML 充當 XML 的情況下使用 XML 聲明)。

P粉579008412

數(shù)據存儲

  • 為數(shù)據庫中的所有表和文本列指定 utf8mb4 字符集。這使得 MySQL 物理存儲和檢索以 UTF-8 原生編碼的值。請注意,如果指定了 utf8mb4_* 排序規(guī)則(沒有任何顯式字符集),MySQL 將隱式使用 utf8mb4 編碼。

  • 在舊版本的 MySQL (utf8,它僅支持 Unicode 字符的子集。我希望我是在開玩笑。

數(shù)據訪問

  • 在您的應用程序代碼(例如 PHP)中,無論您使用哪種數(shù)據庫訪問方法,您都需要將連接字符集設置為 utf8mb4。這樣,當 MySQL 將數(shù)據傳遞給您的應用程序時,它不會從其本機 UTF-8 進行轉換,反之亦然。

  • 某些驅動程序提供自己的機制來配置連接字符集,該機制既更新其自身的內部狀態(tài),又通知 MySQL 連接上要使用的編碼 - 這通常是首選方法。在 PHP 中:

    • 如果您使用 PDO 抽象層對于 PHP ≥ 5.3.6,您可以在 DSN

      $dbh = new PDO('mysql:charset=utf8mb4');
    • 如果您使用mysqli,您可以調用 set_charset()

      $mysqli->set_charset('utf8mb4');       // object oriented style
        mysqli_set_charset($link, 'utf8mb4');  // procedural style
    • 如果你堅持使用普通的 mysql 但碰巧運行 PHP ≥ 5.2.3,您可以調用 mysql_set_charset代碼>.

  • 如果驅動程序沒有提供自己的機制來設置連接字符集,您可能必須發(fā)出查詢來告訴 MySQL 您的應用程序期望連接上的數(shù)據如何編碼:設置名稱'utf8mb4'。

  • 對于 utf8mb4/utf8 的考慮同樣適用,如上所述。

輸出

  • HTTP頭中應設置UTF-8,如Content-Type:text/html;字符集=utf-8。您可以通過設置 default_charset code> 在 php.ini 中(首選),或手動使用 header() 函數(shù)。
  • 如果您的應用程序將文本傳輸?shù)狡渌到y(tǒng),它們還需要了解字符編碼。對于 Web 應用程序,必須告知瀏覽器發(fā)送數(shù)據的編碼(通過 HTTP 響應標頭或 HTML 元數(shù)據)。
  • 使用 json_encode() 對輸出進行編碼時,添加 JSON_UNESCAPED_UNICODE 作為第二個參數(shù)。

輸入

  • 瀏覽器將以為文檔指定的字符集提交數(shù)據,因此無需對輸入執(zhí)行任何特殊操作。
  • 如果您對請求編碼有疑問(以防它可能被篡改),您可以在嘗試存儲或在任何地方使用它之前驗證每個收到的字符串是否為有效的 UTF-8。 PHP 的 mb_check_encoding() 執(zhí)行以下操作:技巧,但你必須虔誠地使用它。確實沒有辦法解決這個問題,因為惡意客戶端可以以他們想要的任何編碼提交數(shù)據,而且我還沒有找到讓 PHP 可靠地為您執(zhí)行此操作的技巧。

其他代碼注意事項

  • 顯然,您將提供的所有文件(PHP、HTML、JavaScript 等)都應使用有效的 UTF-8 進行編碼。

  • 您需要確保每次處理 UTF-8 字符串時都是安全的。不幸的是,這是最困難的部分。您可能希望廣泛使用 PHP 的 mbstring 擴展名。

  • 默認情況下,PHP 的內置字符串操作是 UTF-8 安全的。您可以使用正常的 PHP 字符串操作安全地執(zhí)行一些操作(例如連接),但對于大多數(shù)情況,您應該使用等效的 mbstring 函數(shù)。

  • 要知道您在做什么(閱讀:不要搞砸),您確實需要了解 UTF-8 以及它如何在盡可能最低的級別上工作。查看 utf8.com 中的任何鏈接,獲取一些很好的資源,以了解您需要了解的所有內容。 p>

最新下載
更多>
網站特效
網站源碼
網站素材
前端模板