ODBC Driver PHP 以及中文變成問號的處理 @ 軟體密技 :: 隨意窩 Xuite日誌
  • 關鍵字
  • [此功能已終止服務]
    1. 沒有新回應!





  • Powered by Xuite
    201710191040ODBC Driver PHP 以及中文變成問號的處理

    PHP 5.x 安裝 freetds

    PHP 7.x Microsoft Drivers for PHP

    unixODBC 一併帶上

     

    freetds 測試

    測試主機連線
    # tsql -H主機名或IP -p 1433 -U 用戶名稱

    測試以 FreeTDS 設定的連線
    # tsql -S FreeTDS設定名稱 -U 用戶名稱

    > use 測試的資料庫名稱
    > select * from 資料表
    > go

     

    測試透過 ODBC 連線

    # isql -v odbc.ini設置的DSN名稱  用戶名稱  密碼
    > use 測試的資料庫名稱
    > select * from 資料表名稱

     

    開啟 SELinux 布林值

    # setsebool -P httpd_can_network_connect_db on

     

    === 關鍵來了 ===

    此時在 PHP 裡連接 SQL Server 應該是沒問題,至於執行查詢語法,也可正常執行,只是得到的結果是中文字變成問號,幾個中文字就變成幾個問號。

    為了這個問號,Google 了好久(大概有兩個星期吧)。

    為什麼在 Linux Command Mode下,用 tsql 或是 isql 去測試查詢都很正確的顯示中文字,但卻在 PHP 網頁中顯示問號呢?疑惑.....

    最後的關頭,只好往系統設定想。

    記得以前 Linux認證課程時,學生總會問到 Command Modre 下顯示中文的問題,為什麼在中文 Windows 下透過 PUTTY 卻無法正確顯示中文?為什麼在 Linux 本機上看見的中文字是亂碼?

    這與 Command Mode 有沒有中文字體可以顯示以及 Locale 的設定有關。

    於是翻了一下 PHP 手冊找找有關 Locale 的指令 / 函式,找到了 setlocale() 函式。

    果然,在連接前設定一下 LC_ALL 為 zh_TW.UTF-8(指令 setlocale(LC_ALL, "zh_TW.UTF-8")   ),一切問題都解決了。

     

    此篇獻給所有被這個問題困擾的設計師們!!

    Google Chrome H...|日誌首頁|cyrus-imapd 的DBERROR上一篇Google Chrome Hijacked----瀏覽器被 cleanresp.net 綁架...下一篇cyrus-imapd 的DBERROR
    回應