Python论坛  - 讨论区

标题:[python-chinese] mysql字符集的老问题,好像一直没有很好的解决

2007年01月09日 星期二 12:41

mikegaulmail-python在yahoo.com.cn mikegaulmail-python在yahoo.com.cn
星期二 一月 9 12:41:58 HKT 2007

google了很久,发现针对utf8字符集的问题,没有很好的解决办法,不知道是不是我没有搜索到。

我遇到的情况是这样的,我感觉好像好多人都是这样:

mysql3.x,用的是latin1字符集,而我现在要存储的数据是utf8的,又不能修改mysql的默认字符集,又不能象mysql4.1那样指定一个。怎么办呢?

目前我的办法是修改了cursors.py中的一些内容,从而能够自己指定,但是,造成了无法使用execute()的第二个参数。

有没有什么比较好的办法解决呢?不要改数据库配置,不要改python-mysql的脚本。我实在没有办法了。只能高人指点迷津。




		
___________________________________________________________ 
抢注雅虎免费邮箱-3.5G容量,20M附件! 
http://cn.mail.yahoo.com

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月09日 星期二 12:57

Zoom.Quiet zoom.quiet在gmail.com
星期二 一月 9 12:57:12 HKT 2007

On 1/9/07, mikegaulmail-python在yahoo.com.cn
<mikegaulmail-python在yahoo.com.cn> wrote:
> google了很久,发现针对utf8字符集的问题,没有很好的解决办法,不知道是不是我没有搜索到。
>
> 我遇到的情况是这样的,我感觉好像好多人都是这样:
>
> mysql3.x,用的是latin1字符集,而我现在要存储的数据是utf8的,又不能修改mysql的默认字符集,又不能象mysql4.1那样指定一个。怎么办呢?
>
> 目前我的办法是修改了cursors.py中的一些内容,从而能够自己指定,但是,造成了无法使用execute()的第二个参数。
>
> 有没有什么比较好的办法解决呢?不要改数据库配置,不要改python-mysql的脚本。我实在没有办法了。只能高人指点迷津。
>
如果没有DB 直接搜索的要求的话,
我的经验是使用base64 编码提交给DB!
这样Python 这边正常使用utf-8 只是DB 中存储的都是 base64 编码过后的latin1 字串,
使用和提取或是显示时都没有问题的
>
>
>
>
> ___________________________________________________________
> 抢注雅虎免费邮箱-3.5G容量,20M附件!
> http://cn.mail.yahoo.com
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


-- 
'''Time is unimportant, only life important!
blog@  http://blog.zoomquiet.org/pyblosxom/
wiki@    http://wiki.woodpecker.org.cn/moin/ZoomQuiet
douban@ http://www.douban.com/people/zoomq/
____________________________________
Please use OpenOffice.org to replace M$ office.
     http://zh.openoffice.org
Please use 7-zip to replace WinRAR/WinZip.
     http://7-zip.org/zh-cn/
You can get the truely Freedom from software.
'''

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]
yrh

yrh

2007年01月09日 星期二 13:02

yrh yuanruihong在126.com
星期二 一月 9 13:02:43 HKT 2007

mikegaulmail-python在yahoo.com.cn 写道:
> google了很久,发现针对utf8字符集的问题,没有很好的解决办法,不知道是不是我没有搜索到。
>
> 我遇到的情况是这样的,我感觉好像好多人都是这样:
>
> mysql3.x,用的是latin1字符集,而我现在要存储的数据是utf8的,又不能修改mysql的默认字符集,又不能象mysql4.1那样指定一个。怎么办呢?
>
> 目前我的办法是修改了cursors.py中的一些内容,从而能够自己指定,但是,造成了无法使用execute()的第二个参数。
>
> 有没有什么比较好的办法解决呢?不要改数据库配置,不要改python-mysql的脚本。我实在没有办法了。只能高人指点迷津。
>
>
>   
没用过mysql,不过一般数据库都可以设置客户端的字符编码,比如postgresql是:
SET CLIENT_ENCODING TO '/value/';
你查一下数据库文档看看


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月09日 星期二 16:43

mikegaulmail-python在yahoo.com.cn mikegaulmail-python在yahoo.com.cn
星期二 一月 9 16:43:54 HKT 2007

直接搜索肯定是会需要的。所以不能用base64编码的方式来做。我看了python-mysql的部分源代码(没有全看懂),不过发现为什么它非要取mysql默认的编码方式呢,搞不懂。PHP就简单多了,什么都不问,直接存进去就好了。原来是什么就是什么。


--- "Zoom.Quiet" <zoom.quiet在gmail.com>写道:

> On 1/9/07, mikegaulmail-python在yahoo.com.cn
> <mikegaulmail-python在yahoo.com.cn> wrote:
> >
>
google了很久,发现针对utf8字符集的问题,没有很好的解决办法,不知道是不是我没有搜索到。
> >
> > 我遇到的情况是这样的,我感觉好像好多人都是这样:
> >
> >
>
mysql3.x,用的是latin1字符集,而我现在要存储的数据是utf8的,又不能修改mysql的默认字符集,又不能象mysql4.1那样指定一个。怎么办呢?
> >
> >
>
目前我的办法是修改了cursors.py中的一些内容,从而能够自己指定,但是,造成了无法使用execute()的第二个参数。
> >
> >
>
有没有什么比较好的办法解决呢?不要改数据库配置,不要改python-mysql的脚本。我实在没有办法了。只能高人指点迷津。
> >
> 如果没有DB 直接搜索的要求的话,
> 我的经验是使用base64 编码提交给DB!
> 这样Python 这边正常使用utf-8 只是DB 中存储的都是
> base64 编码过后的latin1 字串,
> 使用和提取或是显示时都没有问题的
> >
> >
> >
> >
> >
>
___________________________________________________________
> > 抢注雅虎免费邮箱-3.5G容量,20M附件!
> > http://cn.mail.yahoo.com
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to 
> python-chinese-request在lists.python.cn
> > Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> -- 
> '''Time is unimportant, only life important!
> blog@  http://blog.zoomquiet.org/pyblosxom/
> wiki@   
> http://wiki.woodpecker.org.cn/moin/ZoomQuiet
> douban@ http://www.douban.com/people/zoomq/
> ____________________________________
> Please use OpenOffice.org to replace M$ office.
>      http://zh.openoffice.org
> Please use 7-zip to replace WinRAR/WinZip.
>      http://7-zip.org/zh-cn/
> You can get the truely Freedom from software.
> '''
> 


__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com

__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 09:05

jetrix chan jetrixc在gmail.com
星期三 一月 10 09:05:48 HKT 2007

昨天也遇到了,用这样的方式解决:

import MySQLdb

line = open('order_table_head.csv').read()
line = line.rstrip()
line = line.split(chr(9))
myDB = MySQLdb.Connect(host = "127.0.0.1",
                       user = "user",
                       passwd = "guest",
                       db = "test")
sql = """
update order_table set
date_1 = %s,
date_2 = %s,
date_3 = %s,
date_4 = %s,
date_5 = %s,
date_6 = %s,
date_7 = %s
where cnt = 1
"""

cursor = myDB.cursor()
cursor.execute(sql, line[8:15])
print str(cursor.rowcount) + " rows updated"
myDB.close()



On 1/9/07, mikegaulmail-python在yahoo.com.cn <
mikegaulmail-python在yahoo.com.cn> wrote:
> google了很久,发现针对utf8字符集的问题,没有很好的解决办法,不知道是不是我没有搜索到。
>
> 我遇到的情况是这样的,我感觉好像好多人都是这样:
>
> mysql3.x,用的是latin1字符集,而我现在要存储的数据是utf8的,又不能修改mysql的默认字符集,又不能象mysql4.1那样指定一个
。怎么办呢?
>
> 目前我的办法是修改了cursors.py中的一些内容,从而能够自己指定,但是,造成了无法使用execute()的第二个参数。
>
> 有没有什么比较好的办法解决呢?不要改数据库配置,不要改python-mysql的脚本。我实在没有办法了。只能高人指点迷津。
>
>
>
>
>
> ___________________________________________________________
> 抢注雅虎免费邮箱-3.5G容量,20M附件!
> http://cn.mail.yahoo.com
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


-- 
Best Regards,
         Jetrix Chan
----
jetrixc在gmail.com
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070110/f152143f/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 11:11

mikegaulmail-python在yahoo.com.cn mikegaulmail-python在yahoo.com.cn
星期三 一月 10 11:11:01 HKT 2007

老兄这个好像只是正常的数据库连接和插入,和字符集没有什么关系啊。我们一般不都是这样做的吗?

--- jetrix chan <jetrixc在gmail.com>写道:

> 昨天也遇到了,用这样的方式解决:
> 
> import MySQLdb
> 
> line = open('order_table_head.csv').read()
> line = line.rstrip()
> line = line.split(chr(9))
> myDB = MySQLdb.Connect(host = "127.0.0.1",
>                        user = "user",
>                        passwd = "guest",
>                        db = "test")
> sql = """
> update order_table set
> date_1 = %s,
> date_2 = %s,
> date_3 = %s,
> date_4 = %s,
> date_5 = %s,
> date_6 = %s,
> date_7 = %s
> where cnt = 1
> """
> 
> cursor = myDB.cursor()
> cursor.execute(sql, line[8:15])
> print str(cursor.rowcount) + " rows updated"
> myDB.close()
> 
> 
> 
> On 1/9/07, mikegaulmail-python在yahoo.com.cn <
> mikegaulmail-python在yahoo.com.cn> wrote:
> >
>
google了很久,发现针对utf8字符集的问题,没有很好的解决办法,不知道是不是我没有搜索到。
> >
> > 我遇到的情况是这样的,我感觉好像好多人都是这样:
> >
> >
>
mysql3.x,用的是latin1字符集,而我现在要存储的数据是utf8的,又不能修改mysql的默认字符集,又不能象mysql4.1那样指定一个
> 。怎么办呢?
> >
> >
>
目前我的办法是修改了cursors.py中的一些内容,从而能够自己指定,但是,造成了无法使用execute()的第二个参数。
> >
> >
>
有没有什么比较好的办法解决呢?不要改数据库配置,不要改python-mysql的脚本。我实在没有办法了。只能高人指点迷津。
> >
> >
> >
> >
> >
> >
>
___________________________________________________________
> > 抢注雅虎免费邮箱-3.5G容量,20M附件!
> > http://cn.mail.yahoo.com
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to 
> python-chinese-request在lists.python.cn
> > Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> -- 
> Best Regards,
>          Jetrix Chan
> ----
> jetrixc在gmail.com
> 


__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号