aardio官方社区

 找回密码
 注册会员

!connect_header_login!

只需一步,快速开始

搜索
查看: 9059|回复: 4

求教能否转换为字符串。

[复制链接]

6

主题

20

帖子

107

积分

一级会员

Rank: 2

积分
107
发表于 2011-5-21 01:21:51 | 显示全部楼层 |阅读模式
今天遇到的两个问题都与数据类型转换有关,一整天就纠缠在两个问题上。
第一个问题,我使用win.guid.create()生成一个guid,但我想把它保存成string类型,发现没有tostring()方法。
第二个问题也一样。是查询数据库返回的结果。rs(“字段名").value,我原以为结果是自动进行类型转换的,或者统一返回string类型,但不是,好像是table类型,并且也没有tostring方法。实际上,当我从数据库中读取一个字符串时,虽然可以把它直接在屏幕上输出显示,但本质上,它并不是字符串,当我想把它重新转换为字符串(需要再进一步转换成utf-8)保存时,试过一些方法都不成功。要么保存不进去,要么汉字是乱码。问题的根源,还是在这里  rs(“字段名").value 它并不是字符串,直接对它进行字符串转换或保存会有问题。

不知高手们能否抽空解答一下。

回复

使用道具 举报

29

主题

688

帖子

4168

积分

超级版主

Rank: 8Rank: 8

积分
4168
发表于 2011-5-21 07:40:51 | 显示全部楼层
import win.guid;

var guid  = win.guid.create()

io.open()
//转换为字符串显示
io.print( tostring(guid) )

//因为io.print会自动调用tostring(注意,很多库函数有这个功能),可简写如下
io.print( guid )
回复

使用道具 举报

6

主题

20

帖子

107

积分

一级会员

Rank: 2

积分
107
 楼主| 发表于 2011-5-21 08:55:33 | 显示全部楼层
先谢谢。一早进来就看到回复,很惊讶。先谢谢 楼上。
至于问题,我会按照上面的提示看一下,再来回复。
回复

使用道具 举报

6

主题

20

帖子

107

积分

一级会员

Rank: 2

积分
107
 楼主| 发表于 2011-5-21 10:34:42 | 显示全部楼层
我的这个程序,实际上是把excel中的内容,导入到mysql数据库。在建mysql数据表的时候,我把主键设置为varchar(32),打算用来保存字符串形式的uuid(或guid).

第一次导入进数据库后我发现所有汉字乱码了,于是我在数据库连接串里加了这一段:“charset=UTF8;”,发现保存数据时,必须先象这样转换一下才行:string.fromto("汉字",936,65001),否则运行时会出错。

第一个问题,guid字符串的问题,现在已经解决,这要多谢 [quicker] 老大. 我使用 tostring(guid) ,果然生成了guid字符串。

第二个问题正在解决,但问题原因不是我在一楼说的那样,很抱歉。怪我自己不认真。 从excel读入数据后,因为不能顺利转换为utf-8编码,所以让我产生了错误的结论。现在虽然问题仍未解决,但问题范围已经进一步缩小。首先,我用 type(变量名)函数测试了一下,读入的数据的确是string类型的,这正是我要的类型没错,顺便说一下,type函数很好用。然后,我用winform.edit.text =  变量 的形式,在窗口显示了一下数据,发现能正常显示汉字,但不能保存进数据库,经多方测试,应该是编码没有转换为utf-8导致的。使用string.fromto(变量,936,65001)转换了一下,发现并没有成功转换成utf-8,转换后反而显示的汉字也乱码了。
回复

使用道具 举报

6

主题

20

帖子

107

积分

一级会员

Rank: 2

积分
107
 楼主| 发表于 2011-5-21 14:17:40 | 显示全部楼层
第二个问题,奋斗到现在,到目前为止,似乎已经查明原因。

下面三条语句:
(1)、    str = string.fromto("王春",936,65001);
(2)、    str = string.fromto("王春琪",936,65001);
(3)、    str = string.fromto("王春琪琪",936,65001);

(1)、(3)都能成功执行,并最终在数据库看到存入的汉字,但第(2)句执行后,在存入数据库的时候报错:[MySql][ODBC 5.1 Driver][mysqld-2.0,51b-community-nt]
Incorrect string value:'\xE7\x90?' for column 'username' at row 1
老大快来看看吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2022-9-28 08:12 , Processed in 0.052998 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表