作者 主題: [問題]請問PEAR+MSSQL  (閱讀 9340 次)

0 會員 與 1 訪客 正在閱讀本文。

Jihad

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[問題]請問PEAR+MSSQL
« 於: 2004-12-08 10:46 »
請問有用過PHP+MSSQL的學長,你們有遇過這個問題嗎?!!

我利用PEAR取出存在MSSQL中的資料(中文),為什麼取出來後會變成?符號呢?!!
取出數值或英文字則一切正常.例如:取出"酷學園",則顯示為"???"

如果是PHP+MySQL的話則一切正常,中英文字跟數字都沒問題!!!

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
[問題]請問PEAR+MSSQL
« 回覆 #1 於: 2004-12-08 10:57 »
這應該是 charset 的問題
有試過不要用 PEAR 直接連 MSSQL 嗎?
'm no more than a fxxking coding monkey....

Jihad

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[問題]請問PEAR+MSSQL
« 回覆 #2 於: 2004-12-08 11:44 »
我試了一下不用PEAR抓資料,結果還是一樣,只要有中文字的地方就出現"?".......以下是PHP的錯誤訊息,看來問題的確是出在character.....

Warning: mssql_query(): WARNING! Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?'). (severity 16)

有學長知道怎麼解決嗎?!!謝謝!!

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
[問題]請問PEAR+MSSQL
« 回覆 #3 於: 2004-12-08 12:24 »
我沒寫過 php + mssql 的程式
不過應該可以從下面兩個方向思考
1. 改 db 的 charset,通常這比較不可行
2. 改 php 的預設 encoding(php.ini), e.g. UTF-8
'm no more than a fxxking coding monkey....

Jihad

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[問題]請問PEAR+MSSQL
« 回覆 #4 於: 2004-12-08 14:12 »
謝謝您的建議.....
但是.....改了還是一樣....... :evil:

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
[問題]請問PEAR+MSSQL
« 回覆 #5 於: 2004-12-08 14:34 »
怎麼改的何不提出來討論一下
'm no more than a fxxking coding monkey....

Jihad

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[問題]請問PEAR+MSSQL
« 回覆 #6 於: 2004-12-08 16:39 »
我的修改方式是 :

修改php.ini 檔,將default_charset = "zh_TW"改為default_charset = "UTF-8"
接著重新啟動apache.

<以下是設定上的相關資訊>
apache是1.3.29
php是4.3.8

Apache Environment
HTTP_ACCEPT_CHARSET : ISO-8859-1,utf-8;q=0.7,*;q=0.7

HTTP Headers Information
Accept-Charset : ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-Type : text/html; charset=zh_TW

希望有幫助,謝謝!!!

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
[問題]請問PEAR+MSSQL
« 回覆 #7 於: 2004-12-09 15:12 »
引述: "Jihad"

修改php.ini 檔,將default_charset = "zh_TW"改為default_charset = "UTF-8"
接著重新啟動apache.

這也是我想的方式

引述: "Jihad"

Content-Type : text/html; charset=zh_TW

這裡怪怪的...
charset name 會有 zh_TW 嗎?
'm no more than a fxxking coding monkey....

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
[問題]請問PEAR+MSSQL
« 回覆 #8 於: 2004-12-09 15:16 »
新發現!

會不會是 freetds 那邊 client encoding 的問題
'm no more than a fxxking coding monkey....

Jihad

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[問題]請問PEAR+MSSQL
« 回覆 #9 於: 2004-12-09 18:01 »
引述: "powerouch"
引述: "Jihad"

修改php.ini 檔,將default_charset = "zh_TW"改為default_charset = "UTF-8"
接著重新啟動apache.

這也是我想的方式

引述: "Jihad"

Content-Type : text/html; charset=zh_TW

這裡怪怪的...
charset name 會有 zh_TW 嗎?


嗯........charset name的值應該會是什麼呢?!! BIG5或UTF-8嗎?!!
至於FreeTDS的話,應該跟它沒關係吧!!!因為我是直接用PEAR去連MSSQL,並沒有將FreeTDS編入PHP!!!

Jihad

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[問題]請問PEAR+MSSQL
« 回覆 #10 於: 2004-12-09 18:10 »
引述: "powerouch"
新發現!

會不會是 freetds 那邊 client encoding 的問題


我試著裝了FreeTDS,但也是沒辦法在網頁中顯示中文!!!另外我發現一件事.....當我的locale值是en_US時,在Terminal下連MSSQL(LOGIN時)也會發生中文字無法顯示的問題,如果將它改為zh_TW的話,在Login進MSSQL時就完全正常.........哇勒.....我快瘋了.....再不行的話,就通通去AD作認證吧!!!煩死了!!!!!

阿渣

  • 懷疑的國中生
  • **
  • 文章數: 53
    • 檢視個人資料
    • http://cafes.demons.to/
[問題]請問PEAR+MSSQL
« 回覆 #11 於: 2004-12-13 21:46 »
freetds.conf

tds version = 4.2

Jihad

  • 懷疑的國中生
  • **
  • 文章數: 32
    • 檢視個人資料
[問題]請問PEAR+MSSQL
« 回覆 #12 於: 2004-12-17 14:13 »
編碼問題已順利解決,謝謝!!! :D

achilles

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
    • http://www.vixual.net/
[問題]請問PEAR+MSSQL
« 回覆 #13 於: 2007-04-09 21:19 »
編碼的問題,可以直接修改 freetds.conf,在伺服器的設定部份加入
"client charset = cp950" 或 "client charset = UTF-8" 就可以正常顯示中文了

~ 不過,這篇文章還真是舊 ~
Vixual 網路視野
http://www.vixual.net/