| 发表于:2008-01-24 00:54:124楼 得分:0 |
没想到还有人用到了informix 9 ,小弟还在用7.3,我认为已经到顶了。 我认为可能不是字符类型的问题。试试在数据库中用sql语句查出错的那条记录。 unload 出错的数据,你用excel打开,分格符为 ¦,估计你会有所发现,字段会串行,这应该是原因吧。 可能:1 表中本身存在半角的字符,建议表中所有标点用全角或半角成双出现。 2 记录的某个字段的值最后一位存在一个全角的半个字。 也可以这样试试: sql select 的字段后你都加 .trim() 另一个只能研究编码了 gbk: 汉字国标扩展码,基本上采用了原來gb2312-80所有的汉字及码位,並涵盖了原unicode中所有的汉字20902,总共收录了883个符号, 21003个汉字及提供了1894个造字码位。 microsoft简体版中文windows 95就是以gbk为內码,又由于gbk同時也涵盖了unicode所有cjk汉字,所以也可以和unicode做一一对应。 gb码,全称是gb2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。p-windows3.2和苹果os就是以gb2312为基本汉字编码, windows 95/98则以gbk为基本汉字编码、但兼容支持gb2312。gb码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。 gbk编码是中国大陆制订的、等同于ucs的新的中文编码扩展国家标准。gbk工作小组于1995年10月,同年12月完成gbk规范。该编码标准兼容gb2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。 汉字转化成gbk码程序 原链接:http://www.boy5d.com/article/html/2007-11/373.html using system; using system.data; using system.configuration; using system.collections; using system.web; using system.web.security; using system.web.ui; using system.web.ui.webcontrols; using system.web.ui.webcontrols.webparts; using system.web.ui.htmlcontrols; using system.text; public partial class getgbk_code_server : system.web.ui.page { string data = ""; protected void page_load(object sender, eventargs e) { data = request.querystring["content"]; string content = getnumber(); string result1 = ""; int len = content.length; for (int i = 0; i <= len - 1; i = i + 3) { string temp = content.substring(0, 3); content = content.substring(3); result1 = result1 + trans(int.parse(temp)); } response.write(result1); } string trans(int n) { string result = ""; int[] store; store = new int[100]; int tmp1 = n, tmp2; int i = 0; if (n < 16) { store[i] = n; } while (tmp1 > = 16) //循环取余数 { tmp2 = tmp1 % 16; tmp1 = tmp1 / 16; store[i++] = tmp2; if (tmp1 <= 16) store[i] = tmp1; } for (int j = i; j > = 0; j--) //余数的倒序输出 { if (store[j] < 10) { result = result + store[j].tostring(); } else { switch (store[j]) //16进制中的字母所代表的数字 { case 10: result = result + "a"; break; case 11: result = result + 'b'; break; case 12: result = result + 'c'; break; case 13: result = result + 'd'; break; case 14: result = result + 'e'; break; case 15: result = result + 'f'; break; } } } return result; } string getnumber() { encoding ed = encoding.getencoding("gbk"); byte[] bytecontent = ed.getbytes(data); string ecode = ""; for(int i = 0; i < bytecontent.length; i++) { ecode += bytecontent[i].tostring(); } return ecode; } } | | |
|