none
utf8 亂碼問題 RRS feed

  • 問題

  •  

    本人遇到的問題,卡住數日了,請幫忙,感謝

    公司內的server機為mysql server, 所有的編碼都設定為utf8

    而以vb2005, adodb/odbcdb 兩種connection,從一個excel 裏的data讀到database 內

     

    當用mysql query browser 查看時,見到database裏面的entry都是亂碼,但用vb 2005 retrieve 時可以找回那些文字

    還有,某幾個字當寫入database的是候, 都被視為"?" (e.g. 喹,啉,酶...)

    retrieve出來都顯示了"?"

     

    是不是我的mysql/ vb 設定有問題? 這些亂碼問題有没有解決方案?

    有熱心人士幫小弟解決,實在感激萬分....謝謝...

     

    Settings:

    VB 2005

    MySQL 5.0 Server

    ODBC 3.5 connector

    MySQL Query Browser

    2008年3月11日 上午 06:47

解答

  • 所謂的散布是要安裝到用戶端。

     

    而且你的程式也必須要改用 MySQL Connector for .NET 的元件 (MySql.Data.dll),命名空間是 MySql.Data.MySqlClient,其他的結構就和 System.Data.SqlClient 差不多了。

     

    至於 MySQL 內部指令的用法,我也只會一些基本的 SELECT/INSERT/UPDATE/DELETE/CREATE/DROP 而已,太進階的我也沒用,而且我在使用 MySQL Connector for .NET 存取 MySQL 資料庫時,沒有多用其他指令。
    2008年3月11日 上午 07:46
    版主

所有回覆

  • 用 ODBC Driver 來連接 MySQL,會有編碼的 bug 出現:

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=1420489&SiteID=14

     

    用 MySQL Connector for .NET 則不會有這個問題。

    2008年3月11日 上午 07:11
    版主
  • 那是否在server 裏install mysql .net connector 5.0 可解決這個問題?

    不論mysql query browser的亂碼, 及 "?" 的問題??

    2008年3月11日 上午 07:18
  • 如果你的資料存取是來自 Server (e.g. ASP.NET) 就可以。

    如果是用戶端應用程式,就必須要隨應用程式散布才行。

     

    我的經驗是用 MySQL .NET Connector 的時候,沒有碰到你的問題。

     

    2008年3月11日 上午 07:33
    版主
  •  

    我的資料存取都是用我的電腦內的vb program 來存取,應該是用戶端吧

     

    那我可以怎樣"散布"呢?? 我曾經試過 connection之後行一句query

    "set name utf8"

    但當我insert data的時候, 會出現"data too long for column..."的error....

    該怎辦?

    請原諒我的愚昧...

    2008年3月11日 上午 07:39
  • 所謂的散布是要安裝到用戶端。

     

    而且你的程式也必須要改用 MySQL Connector for .NET 的元件 (MySql.Data.dll),命名空間是 MySql.Data.MySqlClient,其他的結構就和 System.Data.SqlClient 差不多了。

     

    至於 MySQL 內部指令的用法,我也只會一些基本的 SELECT/INSERT/UPDATE/DELETE/CREATE/DROP 而已,太進階的我也沒用,而且我在使用 MySQL Connector for .NET 存取 MySQL 資料庫時,沒有多用其他指令。
    2008年3月11日 上午 07:46
    版主
  •  

    我安裝了mysql connector for .net 5.0

    而且在vb 2005 裏也import 了這個 dll

     

    是否裏面的structure 與odbc的差不多?

     

    大膽的問...可否提供一些用mysql.data.dll連接的範例??

    如果不可以亦沒問題, 到了這個地步已經很感激了!!

     

    2008年3月11日 上午 08:00
  • 如果你是用 OdbcConnection 的話,只要直接改成 MySqlConnection 就行了。

    其他的也是一樣 (e.g. OdbcCommand -> MySqlCommand)

     

    程式中要記得 Import MySql.Data.MySqlClient。

     

    2008年3月11日 上午 08:20
    版主
  • 感謝你,現在我已經解決到database 內亂碼問題,而且那些字(喹,啉)也可以insert , 拿出來亦沒有亂碼

    實在太感謝小朱了!!!萬分感激,你解決了我多天的疑慮....

    2008年3月11日 上午 08:45
  • 最好看一下 MySQL 網站的授權說明。

     

    如果你不公開原始碼,又只支援一個資料庫,比如說使用 MySQL .Net 的元件,會有授權費的問題。

     

    在中國網站可以找到一個 MySQL 的業務代表到處貼文說要抓...

     

    德瑞克的網誌:

    MySQL 授權之討論

     

    我:

    MySQL for Windows .Net

    2008年3月11日 上午 09:52
    版主
  •  

    但我現在只install 了 mysql connector for .net 5.0 ,和在vb 裏import 那個dll

    會有授權問題嘛??

    2008年3月11日 上午 09:57
  • 這個網址是什麼情況下要用商用授權的說明:

    http://www.mysql.com/about/legal/licensing/commercial-license.html

     

    Code Snippet

    Specifically:

    • If you include the MySQL server with an application that is not licensed under the GPL or GPL-compatible license, you need a commercial license for the MySQL server.

    • If you develop and distribute a commercial application and as part of utilizing your application, the end-user must download a copy of MySQL; for each derivative work, you (or, in some cases, your end-user) need a commercial license for the MySQL server and/or MySQL client libraries.

    • If you include one or more of the MySQL drivers in your non-GPL application (so that your application can run with MySQL), you need a commercial license for the driver(s) in question. The MySQL drivers currently include an ODBC driver, a JDBC driver and the C language library.

    • GPL users have no direct legal relationship with MySQL AB. The commercial license, on the other hand, is MySQL AB's private license, and provides a direct legal relationship with MySQL AB.

     

     

     

    更多的授權說明請參考 MySQL 網站的說明。

     

    MySQL 宣稱,所有程式碼都是自己寫的,所以只要不開放原始碼,就不能引用 GPL 裡面的:

    GPL 翻譯版

     

    這些要求適用於整個修改過的作品。如果能夠確定作品的一部分並非本程式的衍生產品,且可以合理地單獨考慮並將它與原作品分開的話,則當您將它作為獨立的作品發佈時,它不受此許可證和其條款的約束。但是當您將這部分與基於本程式的作品一同發佈時,則整個套件將受到本許可證條款約束,因為本許可證對於其他許可證持有人的授權擴大到整個產品,也就是套件的每個部分,不管它是誰寫的。
    因此,本條款的意圖不在於剝奪您對完全由您自身完成作品的權利,而是履行權利來控制基於本程式的集體作品或衍生作品的發佈。 

    此外,將與本程式無關的作品和本程式 (或本程式的衍生作品) 一起放在貯存媒體或發佈媒體的同一卷上,並不導致將其他作品置於此許可證的約束範圍之內。
     

     

    這是 MySQL 在該網站論壇上說的,中國的業務代表也是這樣回應網友,可以搜尋看看。

     

    例如:

    http://www.chinaunix.net/jh/17/814671.html

     
    一位自稱 MySQL 中國研發中心的行銷經理 (http://www.greatlinux.com/) 說到,只要不開放原始碼的前提下,即使是公司內部的 MySQL 系統,都必須採用商業授權,否則 MySQL 公司可以提告。
    http://www.chinaunix.net/jh/17/814671.html

     
    一位自稱 MySQL 中國研發中心的行銷經理 (http://www.greatlinux.com/) 說到,只要不開放原始碼的前提下,即使是公司內部的 MySQL 系統,都必須採用商業授權,否則 MySQL 公司可以提告。
    Code Snippet
     

    michael75 回复于:2006-08-21 10:57:24

    1、如果你是来开发一些应用软件,数据库用MYSQL,你所开发的应用软件销售,则需要付费license.如果你开发的软件不用于销售,但是你必须开放你的源码。如果你不开放源码,那么MYSQL公司就可以起诉你。
    2、现在MYSQL的具体分类如下:pro版本分为windows、LINUX、UNIX操作系统, 其中windows、LINUX操作系统的MYSQL价格是一样的,UNIX操作系统的MYSQL贵一些。cluster版本的按照CPU来计算的。
    3、如果你是用于商业,捆绑你公司产品销售,那么你必须购买MYSQL的license.根据你的需要的功能和操作系统,价格都会不一样。但是WINDOWS操作系统的价格都一样。
    具体情况可以向我咨询:
    **************************************************************   
                 MYSQL AB中国研发中心
                 拓林思(中国)软件有限公司(turboliunx.inc.
             北京万里开源有限公司      (greatlinux.inc)
                      
                 宋桂平   MYSQL行业经理
                 
    地址:北京市朝阳区建国门外大街甲12号新华保险大厦5层503室
    手机:13911253265
    电话:010-65054020-315
    传真:010-65054017
    邮编:100022
    邮件:michael.song@turbolinux.com.cn
    网址:www.turbolinux.com.cn
    **************************************************************

     

     

     michael75 回复于:2006-11-06 11:29:13

    其实大家有一个问题必须搞清楚,那就是MYSQL的开源和LINUX的开源不一样,MYSQL是半商业半开源,知识产权是属于MYSQL AB公司。而LINUX是完全开源,知识产权不属于任何人。还有的就是如果任何单位使用MYSQL做相关开发,那么所有开发的软件必须也要开源,如果不开源,那么就是违法的,说不定什么时候MYSQL AB公司就会给你发律师函了。
    **************************************************************   
                MYSQL(中国)研发中心           
                北京万里开源软件有限公司  
                拓林思(中国)软件有限公司
                              
               宋桂平   michael.song   行业销售经理
                 
    地址:北京市朝阳区建国门外大街甲12号新华保险大厦5层503室
    手机:13911253265
    电话:010-65054020-315
    传真:010-65693093
    邮编:100022
    邮件:michael.song@greatlinux.com.cn
    网址:www.greatlinux.com
    **************************************************************

     

     michael75 回复于:2006-11-13 10:49:50

    首先要澄清一个误会,MySQL和Linux不一样,它的所有代码从一开始都是由MySQL公司自己开发和维护的,社区只是测试和提交bug。一
    般来说,MySQL不会接受社区对代码的贡献。如果要接受外来的代码贡献,都会和代码编写者签订严格的协议,保证MySQL公司对代码的所有权,不会产生
    纠纷。

        因为MySQL的代码属于MySQL公司,因此MySQL公司有权利来决定选择哪种方式来发布。MySQL支持两种License来发布,一种是
    GPL,一种是商业License.这是两种独立的,互不干涉的模式。所有自由下载的都必须遵循GPL协议,如果是通过MySQL购买的商业版本,就遵循
    商业license.
     
        不知是否解答了您的疑问,有任何问题欢迎和我们随时联系。

     

     


     tony_wu_ad 回复于:2006-11-14 15:09:20

    michael75先生,对于这个mysql我也有一点疑问,像麻烦您帮我看一下。

    比如说在公司内部,我利用mysql进行了数据管理,这些东西,包括代码,都用于公司内部,不拿出去单独卖钱。公开程度,也只是在公司内部公开(不可能在外面随便发布的,要不然BOSS要砍死我)。

    我想这样子的情况,在国内很多,这样子的话,需要单独买license吗?

    多谢了!:em02:


     michael75 回复于:2006-11-14 21:14:34

    zhanglp888 ,你好,您的这种情况是需要购买MYSQL license的,如果您不买的话,那么你所开发的网站则需要把源代码公开.
    michael75
    **************************************************************   
                 MYSQL AB中国研发中心
               北京万里开源有限公司      (greatlinux.inc)
                      
                 宋桂平   MYSQL行业经理
                 
    地址:北京市朝阳区建国门外大街甲12号新华保险大厦5层503室
    手机:13911253265
    电话:010-65054020-315
    传真:010-65054017
    邮编:100022
    邮件:michael.song@greatlinux.com.cn
    网址:www.greatlinux.com
    **************************************************************


     michael75 回复于:2006-11-14 21:25:29

    你好,"比如说在公司内部,我利用mysql进行了数据管理,这些东西,包括代码,都用于公司内部,不拿出去单独卖钱。公开程度,也只是在公司内部公开(不可能在外面随便发布的,要不然BOSS要砍死我)。"
    如果你们公司没有利用MYSQL做相关开发,那么只是公司内部做为标准的数据库用,那么可以不用购买,如果你们在此基础上做了相关开发,那么你们必须将你们所做部分的开发的源代码公开,其公开程度不仅仅是你们公司内部知道,而是要对外公开.如果你们不象公开的话,那么只能购买License.

       另外现在MYSQL在中国已经开始就一些企业就使用MYSQL而没有遵循GPL协议和商业许可规定,目前正在联合国家相关部委和有关部门正在进行第一批黑企业打击与整治..还请关注MYSQL的相关企业和单位引起足够的重视,免的给企业或单位造成不必要的麻烦.

    michael75

     

     
    2008年3月11日 上午 10:14
    版主