查看: 1835|回复: 23
|
mysql store 中文字有问题?!
[复制链接]
|
|
我有一个field name 为 cname , type = "varchar(10)", Collation我已set成
"big5_chinese_ci" 但为何我store 中文字时有时会出现? 如: "马来?亚"
而且显示在web page时一定是????呢? |
|
|
|
|
|
|
|
发表于 30-8-2005 09:47 PM
|
显示全部楼层
有没有试过 utf-8 呢?
big 5 或 gb 比较容易出现乱码,也不是 web 的标准。 |
|
|
|
|
|
|
|
发表于 30-8-2005 09:58 PM
|
显示全部楼层
刚刚试了
big5_chinese_ci, gb2315_chinese_ci, utf8_general_ci 都没有问题,
但是 big5 遇到简体字,bg 遇到繁体字都会出乱码。
只有 utf8 可以同时显示简体字和繁体字。 |
|
|
|
|
|
|
|
发表于 1-9-2005 06:07 PM
|
显示全部楼层
若不特去设定语言也没问题,Mysql 的 Collation 一般都自动设成 latin1_swedish_ci , 存Big5 或 GB(GBK) 都行。
一般网站,我个人比较喜欢用GBK存,因基本上存二万一千个简繁汉字都没问题,佳礼论坛就是使用GBK中文內码。
以utf-8存也不错,不过其单字容量较Big5/GBK大一半。
近日为参与制作的《康熙字典網上版 http://kangxizidian.com 》,中文字全以utf-8格式在MySql存档,果然七万个中文汉字在MySql下运行都没问题。
|
|
|
|
|
|
|
|
发表于 2-9-2005 12:40 AM
|
显示全部楼层
原帖由 网管 于 1-9-2005 06:07 PM 发表
若不特去设定语言也没问题,Mysql 的 Collation 一般都自动设成 latin1_swedish_ci , 存Big5 或 GB(GBK) 都行。
一般网站,我个人比较喜欢用GBK存,因基本上存二万一千个简繁汉字都没问题,佳礼论 ...
大容量对目前的系统来说还算可以应付,使用 utf8 是应为受过不少繁体、简体网页的麻烦。。。 |
|
|
|
|
|
|
|

楼主 |
发表于 2-9-2005 12:16 PM
|
显示全部楼层
我是使用asp.net的,INSERT data 进mysql 的queery如下:
str = "INSERT INTO data VALUES (Cname) VALUES ('车神')"
cmd.CommandText = Str
p/s : 我是使用window XP 的中文系统打字的!!
我已设定了 cname 为 utf8_general_ci ,但当我store 资料进去mysql database时,mysql database 显示 ?? (原本应该是'车神')在对应的cname column,
display资料在datagrid更不用说,为何呢??
当我manually keyin '车神' through phpmyadmin 就可以显示正确的中文字在mysql database,但显示在datagrid里的资料就一样... 还是 "??" |
|
|
|
|
|
|
|
发表于 3-9-2005 01:28 AM
|
显示全部楼层
如果你的 cmd.CommandText = Str 显示出中文字,那么就是 query insert 的问题,如果显示不出,就是 html/asp get/post 的问题。 |
|
|
|
|
|
|
|

楼主 |
发表于 3-9-2005 11:39 AM
|
显示全部楼层
原帖由 flashang 于 3-9-2005 01:28 AM 发表
如果你的 cmd.CommandText = Str 显示出中文字,那么就是 query insert 的问题,如果显示不出,就是 html/asp get/post 的问题。
奇怪的是我test run在我的pc时,一切没问题,无论是insert 还是display chinese word...但我upload 我的application上server后,就连我insert进mysql database的中文字都自动变为 ????
为何这样怪呢?有可能是server company 的问题吗? |
|
|
|
|
|
|
|
发表于 3-9-2005 11:03 PM
|
显示全部楼层
你可以尝试用 application server 给你的工具来测试 mysql, 例如 cpanel 或 phpMyAdmin 来测试中文字。 |
|
|
|
|
|
|
|

楼主 |
发表于 4-9-2005 12:23 PM
|
显示全部楼层
我试过了。。 如果我用phpmyadmin健入中文字就可以显示properly in mysql database.. 虽然如此,但如果我display去webpage还是一样。。。又变回????
如果不用phpmyadmin的话,所有中文字都是????
救命啊!! 为何local 电脑没问题。。 但upload to server就这样的?
local pc mysql version : MySQL 4.1.11
server mysql version : MySQL 4.1.12a-nt |
|
|
|
|
|
|
|
发表于 5-9-2005 12:22 AM
|
显示全部楼层
你需要加上 mysql_query("SET NAMES 'utf8'");
否则中文字不会显现。
我找到的资料说明了:
Telling MySQL how to store the data is just half of the equation. You must also tell MySQL that the data you are passing into it is UTF-8 otherwise it will assume it is in its default encoding.
http://www.shawnolson.net/a/946/
以下是我用 php 测试的 code:
$db = mysql_pconnect('localhost',$User,$Pwd);
mysql_select_db ( $database, $db );
mysql_query("SET NAMES 'utf8'");
$rset = mysql_query( 'SELECT * FROM chinese' );
while( $row = mysql_fetch_assoc($rset) ) {
print_r( $row );
echo '<br>';
} |
|
|
|
|
|
|
|

楼主 |
发表于 6-9-2005 01:49 PM
|
显示全部楼层
但我使用的是asp.net!! 其实我很纳闷,为何在我电脑 (local pc)test run一切都没问题,正常store中文字在mySQL database,正常显示中文字在网页!!
现在除非我keyin chinese character through phpmyadmin,不然中文字
一定变成???,即使我这样做令mySQL DB 能显示中文字,但retrive 中文字在网页时又变成???
可以救救我吗?
注!我 set collation = utf8_general_ci
Dim ConnStr As String = "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=database;" & _
"UID=root;" & _
"PASSWORD=123456;" & _
"OPTION=3;" & _
"CHARSET=utf8;"
[ 本帖最后由 kengkit 于 6-9-2005 02:10 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 6-9-2005 11:46 PM
|
显示全部楼层
或许 "CHARSET=utf8;" 更本就无效,何不试试用其他方法呢?
把你一部分的 code 帖上来向其他 asp.net 的高手们请教会不会更好呢? |
|
|
|
|
|
|
|

楼主 |
发表于 7-9-2005 11:07 AM
|
显示全部楼层
说得也是......
Try
MyConn.Open()
Str = "SET cname 'utf8'"
cmd.CommandText = Str
Added = cmd.ExecuteNonQuery()
Str = "INSERT INTO testing (cname) VALUES ('" + chinese + "')"
cmd.CommandText = Str
Added = cmd.ExecuteNonQuery()
Catch ex As Exception
success = False
errormsg = ex.Message
Finally
If Not MyConn Is Nothing Then
MyConn.Close()
End If
End Try
[ 本帖最后由 kengkit 于 7-9-2005 11:31 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 9-9-2005 05:44 PM
|
显示全部楼层
剛才測試過了, 用 php connect odbc 來那資料沒問題, mysql odbc 3.51 是支持 utf8 的.
應該是 ASP.NET 的 dr("big5").tostring 的問題. |
|
|
|
|
|
|
|
发表于 9-9-2005 06:53 PM
|
显示全部楼层
經過了一連串的測試, 發現 asp.net 使用 mysql odbc 會有亂碼的問題.
現在我用 MySQL Connector Net 顯示中文字沒有問題. |
|
|
|
|
|
|
|

楼主 |
发表于 13-9-2005 02:16 AM
|
显示全部楼层
原帖由 flashang 于 9-9-2005 06:53 PM 发表
經過了一連串的測試, 發現 asp.net 使用 mysql odbc 會有亂碼的問題.
現在我用 MySQL Connector Net 顯示中文字沒有問題.
会吗?是不是和我面对一样的问题呢? 但我是uploaded上server才会出现乱码的 |
|
|
|
|
|
|
|
发表于 29-9-2005 09:36 PM
|
显示全部楼层
嗨嗨 我也是遇到insert中文跟echo中文的問題
比如說
mysql:
insert into table(column) values ('功');
php:
echo '功';
都會有error
utf8是unicode嗎?
有一些問題
是不是所有平台下的网頁瀏覽器都一開始就有utf8?
我是用window me + 中文之星
是否也能輸入unicode的?
mysql的問題看了以上帖子大概知道如何處理
關於php那個不知道要在那裡設定?謝謝 |
|
|
|
|
|
|
|
发表于 30-9-2005 01:10 AM
|
显示全部楼层
原帖由 cristiano~7 于 29-9-2005 09:36 PM 发表
嗨嗨 我也是遇到insert中文跟echo中文的問題
比如說
mysql:
insert into table(column) values ('功');
php:
echo '功';
都會有error
utf8是unicode嗎?
有一些問題
是不是所有平台下的网頁瀏覽器都一開 ...
尝试使用 browser 内置的中文解码吧。
ie : view -- encoding -- chinese (big5 / gb)
firefox : view -- character encoding -- chinese (big5 / gb) |
|
|
|
|
|
|
|
发表于 1-10-2005 12:28 AM
|
显示全部楼层
Database那邊我直接把default-charset成big5就不會有
parse的問題了
喔,php那邊終於找到問題的原因 那是php的big5衝碼問題
echo '功'; 因為功的第二個byte = '
所以 echo 'x''會判斷到少了一個'
呃。。。想用unicode的
我是用window me的
要怎麼在text editor打出unicode呢?
還是要用什麼程式把non-unicode file轉去unicode file?
@@... |
|
|
|
|
|
|
| |
本周最热论坛帖子
|