線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5814
推到 Plurk!
推到 Facebook!

MySQL儲存中文問題

尚未結案
perry722
一般會員


發表:27
回覆:11
積分:7
註冊:2004-05-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-22 12:28:17 IP:202.175.xxx.xxx 未訂閱
各位大大: 我想問一下,如果系統的語言設做英文, 在Mysql中儲存中文時會亂碼, 我查看過其他相關文章, 好像說在Mysql里的my.ini中加default-character-set=big5 後可以正常儲存中文, 但我已經試過此方法, 但都不能成功, 請問還有什麼方法可以正常儲存中文的呢? 1437
------
1437
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-01 15:49:49 IP:211.22.xxx.xxx 未訂閱
請先說明你的 MySQL 安裝環境與安裝程序,還有所撰寫的程式架構. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
mshining
一般會員


發表:9
回覆:16
積分:5
註冊:2004-12-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-15 17:21:56 IP:61.62.xxx.xxx 未訂閱
最近也遇到這個問題 研究版上及MySQL文件後 問題解決了    更改My.ini之後 要重新啟動MySQL    在建立資料庫時要指定使用big5    Example: CREATE DATABASE db_name     DEFAULT CHARACTER SET big5 ;//COLLATE latin1_swedish_ci; http://dev.mysql.com/doc/mysql/en/charset-database.html
oldurchin
一般會員


發表:0
回覆:1
積分:0
註冊:2002-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-06 00:59:20 IP:61.229.xxx.xxx 未訂閱
在 MyODBC initial statement 輸入 SET character_set_results = big5, character_set_connection =big5, character_set_client = big5 應該可以解決你的問題
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-06 09:13:52 IP:218.161.xxx.xxx 未訂閱
插花一下。 上面的方式用 set names 'big5'; 也是一樣的效果    ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
月夜 光明 藍更愁
小蚊子
中階會員


發表:55
回覆:267
積分:94
註冊:2002-06-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-07-13 15:56:43 IP:210.66.xxx.xxx 訂閱
MYSQL 我還是初學者
但經驗告訴我
MYSQL 4.0版以前 與 4.1版以後, 似乎有些不同

若是 BIG5 的環境,MYSQL 4.0 以前的版本,會單純很多
編輯記錄
小蚊子 重新編輯於 2007-07-13 15:57:35, 註解 無‧
小蚊子 重新編輯於 2007-07-13 15:57:56, 註解 無‧
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-07-13 17:27:23 IP:61.30.xxx.xxx 訂閱
我也插花~
set names 'big5'
適用在每次下SQL的前面加上去~
如:
ADD('set names 'big5'; select * from ABC');
===================引 用 a6475 文 章===================
插花一下。上面的方式用 set names 'big5'; 也是一樣的效果 ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
======================
昏睡~
不昏睡~
不由昏睡~
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-07-13 23:17:15 IP:203.204.xxx.xxx 訂閱
1. 您的環境是 MS-Windows ? (Unix-Like 下應該是稱為 my.cnf 吧)
2. 您安裝 MySQL 使用哪一套 ? AppServ ? 官方下載 ? 其他 ?
3. 您安裝 MySQL 的版本 ? (詳細版本?)
4. 您安裝 MySQL 過程中選的語系 ?
5. default-character-set=big5 您是加在 [client] 或 [mysqld] 區域 ?
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-11-21 23:16:36 IP:61.64.xxx.xxx 訂閱
提供你一個另類的看法
不管你 MySQL 的設定是什麼,都可以

重點是「讀出來的環境」,要一樣

因為你存什麼進去,不管是哪種編碼法,讀出來還是一樣的東西,MySQL 不會更改你的資料

例如 MySQL 使用 latin 建立資料庫,連線使用 latin,前端網頁使用 UTF8
請問,這樣可以正常顯示嗎?
答案是,是的,可以正常顯示

變成原本一個字 latin ,並不是只放一個字而已,會少個 Byte,放到後一個字的
用另外的程式去管理讀取時,會出現亂碼,就以為資料錯誤,其實是管理的環境跟原來不一樣
如果用原來的前端環境,讀出來,還是一樣

這就是將資料看成 simple stream 的儲存方式

不過這樣網頁中就一定要加入語系的資料,這樣 Browser 才可以正確解譯 (建議不要仰仗自動辨識的方式)

所以我是這樣設定的

MySQL was compiled by using default charset latin1
DB was created with latin1
Connection is made with UTF8
HTML and PHP (application maybe) files is with 「<meta http-equiv="Content-Type" content="text/html; charset=utf-8">」.

這樣寫進資料庫UTF8一個字會佔 latin1 多個字
讀出來,Browser 為自動轉成正確的形式

當然這是非正式的作法啦!不過也給入侵你資料庫的人,一頭霧水,如果他沒意識到的話,還會以為是亂碼

而如果你要使用其他管理介面,解釋資料時,必須自己動手成正確的顯示格式,是有一點不方便,但也不過是一個動作,還好囉!

主要會這樣的作法是因為,如果都使用 UTF8,當資料欄位不小時,裝 Joomla 時出現一項錯誤,某個東西過大(忘記),原因是使用 UTF8 所以膨脹三倍去囉!超過 MySQL 的上限
才會轉而變成此種奇怪的搭配

所以如果你懶得處理那麼多細微瑣碎設定,用預設安裝 MySQL 啟動後,只要注意你使用的軟體是什麼編碼輸入,管理時,也用同樣編碼解釋囉,大概是這樣,有興趣的,可以試試。

===================引 用 perry722 文 章===================
各位大大:
我想問一下,如果系統的語言設做英文, 在Mysql中儲存中文時會亂碼, 我查看過其他相關文章, 好像說在Mysql里的my.ini中加default-character-set=big5 後可以正常儲存中文, 但我已經試過此方法, 但都不能成功, 請問還有什麼方法可以正常儲存中文的呢?


1437
LPH
一般會員


發表:53
回覆:43
積分:19
註冊:2003-04-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-11-23 22:41:20 IP:125.231.xxx.xxx 訂閱
如果你是用 ODBC 連結只要在 Connect Options 頁面 Initial Statement 設定 set names big5 就可以了 我也是這麼做的
編輯記錄
yckuo 重新編輯於 2007-11-24 11:02:09, 註解 刪除程式碼高亮套用‧
系統時間:2024-03-29 1:37:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!