本帖最后由 y7429949 于 2013-09-09 15:24:49 编辑

解决方案 »

  1.   

    CONVERT()将字符串值转为不同的字符集而你
    SET cc = HEX(pc); 
    IF cc >= "8140" AND cc <="FEA0" THEN 显然 pc 就是 gbk 编码的了,还要转换干什么
      

  2.   

    每次在一行结尾遇到中文标点字符的时候存储过程就结束了。是不是在函数里的那个GBK编码问题,有个帖子说中文标点符号在gbk编码后,按 utf-8 编码规则,总是最后一个字节。所以游标就结束了???不懂,如果确实是这个情况,那应该怎么修改呢
      

  3.   

    hex()不是转换成十六进制吗,刚我测试了下,如果不用hex(),结果集根本就没有数据
      

  4.   

    不错 hex 是转16进制
    但 8140 到 FEA0 是 gbk 的内码范围,由此可知你的 pc 就是 gbk 编码的
      

  5.   

    gbk内码应该是二进制表示吧?这个转为16进制再比较应该是可以,我现在的情况就是一行可以正常转换成汉字,但我的目的是要整列都转,但在遇到某一行以中文标点符号结尾的时候,游标会自动终止,看了您一篇帖子说是gbk对汉字标点符号编码,按 utf-8 编码规则,总是最后一个字节。如果是这样的话,有没有办法可以在用了gbk编码,又可以在utf8编码的数据库中插入中文标点?斑竹,有没有什么好的解决办法吗?为了这问题找了几天资料了
      

  6.   

    我不太明白你的意思
    既然你的函数是按 gbk 编码书写的,那么与 utf8 有什么相关呢?另外 A000 到 AFFF 一段是 gbk 的符号区不存在拼音,直接跳过去就是了
      

  7.   

    你确定
    SELECT PY FROM pinyin WHERE hz=',' LIMIT 1
    有结果?
      

  8.   

    我用这函数可以对一行数据转换成拼音,不过如果是用上面那存储过程的话,在遇到一行以中文标点符号结尾时,游标会满足 “not found”而终止。我是看了你回复的一个帖子才知道gbk编码的中文标点,对应的utf8编码为最后一个字节,是不是游标在读取到以一个中文标点结尾的字符串时,因为数据库是utf8编码,所以游标就自动结束了?
      

  9.   

    SELECT PY FROM pinyin WHERE hz=pin LIMIT 1 INTO pin;应该是这句吧??
    这个是有结果的,我有个拼音对应汉字的库,是可以把拼音查出来的,现在主要的问题是在遇到中文标点符号结尾时,游标自动终止了。感觉是GBK编码的问题,但不知道怎么解决。
      

  10.   

    是对着表查,但拼音中不止有汉字,还有别的比如拼音,标点,所以需要做个判断。现在是一行遇到中文标点符号结尾时,游标满足 not found 条件退出了。