设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2996|回复: 9
打印 上一主题 下一主题

[已经解决] 编码不同的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
跳转到指定楼层
1
发表于 2010-10-8 18:56:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
1.用Excel的csv格式保存的文件RM读取到的中文全是乱码

2.用RM导出变量保存成.csv格式,文本打开是正常的,Excel打开就是乱码(有中文的情况)。

只要解决1的问题就行了。
脚本里写$KCODE="ANSI" 还是没用.

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
2
发表于 2010-10-8 20:13:34 | 只看该作者
我记得以前的 Excel 版本本身就无法正常保存/读取中文到/自 csv,也不知现在如何了。你用十六进制编辑器查看一下文件内容,大概能猜出 Excel 用的什么编码,通用的也就那么几个
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
72
在线时间
673 小时
注册时间
2006-10-3
帖子
1795

开拓者

3
发表于 2010-10-8 20:19:30 | 只看该作者
我认为是可以正常保存的。试了下KCODE不管是ANSI还是GBK都不好使....
EXCEL应该是ANSI码。LZ可以试验用记事本另存一份UTF-8编码的csv文件,这样在RM中就没问题了。
( ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ ω ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้【看猫君玩,我也搞一只】)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
4
 楼主| 发表于 2010-10-8 20:39:08 | 只看该作者
本帖最后由 wbsy8241 于 2010-10-8 20:48 编辑
我认为是可以正常保存的。试了下KCODE不管是ANSI还是GBK都不好使....
EXCEL应该是ANSI码。LZ可以试验用记事 ...
熊猫 发表于 2010-10-8 20:19


这样可以用,但是再EXCEL里编辑保存后就又要开记事本存一下UTF-8编码= =


1L现在是可以保存读取中文的


回复点评:
     很干净的

点评

不敢麻烦贴一下 csv 十六进制的内容?  发表于 2010-10-8 20:42
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
72
在线时间
673 小时
注册时间
2006-10-3
帖子
1795

开拓者

5
发表于 2010-10-8 21:22:59 | 只看该作者
回复 wbsy8241 的帖子


    简单方法就是用VC++写一个DLL调用.......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
6
发表于 2010-10-8 21:38:00 | 只看该作者
这个是 GB2312 编码,你能用记事本打开,说明这是你当前 locale 的代码页,所以用 ANSI 应该是没问题的,只不过你设置 $KCODE 的方式不对,应该用 $KCODE = 'N',表示不使用任何字符集。
不过这个同时也会影响源文件的解释,这是 Ruby 1.8 的缺点。1.9 的字符串编码就完善多了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
7
 楼主| 发表于 2010-10-8 22:04:32 | 只看该作者
熊猫 的太高深了
紫苏 的还是不可以

改N会跳到NONE 只有那4个可选
而且改了还是不可以,UTF-8 UTF8 全部替换成ANSI也不行= =
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

8
发表于 2010-10-8 22:14:32 | 只看该作者
Rm的编码是utf。1.8.4没有字符串内置编码,用api吧
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1030
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

9
发表于 2010-10-9 02:17:59 | 只看该作者
本帖最后由 禾西 于 2010-10-10 03:02 编辑
  1. # Iconv.u2a(string text) => 轉為 ANSI
  2. # Iconv.a2u(string text) => 轉為 UNICODE
  3. # Iconv.conv(string code_tpye, string text)
  4. #// code_tpye :
  5. #// "u" => 轉為 ANSI
  6. #// "a" => 轉為 UNICODE

  7. module Iconv
  8.    CP_ACP = 0
  9.    CP_UTF8 = 65001
  10.    M2W = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  11.    W2M = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  12.   def self.u2a(text)
  13.     n = 0
  14.     i = M2W.call(CP_UTF8, 0 , text, -1,nil,0)
  15.     buf = "\0" * i * 2
  16.     M2W.call(CP_UTF8, 0 , text, -1, buf, i/2)
  17.     i = W2M.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
  18.     ret = "\0" * i
  19.     W2M.call(CP_ACP, 0, buf, -1, ret, i, nil, nil)
  20.     return ret
  21.   end
  22.   def self.a2u(text)
  23.     i = M2W.call(CP_ACP, 0, text, -1, nil, 0)
  24.     buf = "\0" * i * 2
  25.     M2W.call(CP_ACP, 0, text, -1, buf, i / 2)
  26.     i = W2M.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil)
  27.     ret = "\0" * i
  28.     W2M.call(CP_UTF8, 0, buf, -1, ret, i, nil, nil)
  29.     return ret
  30.   end
  31.   def self.conv(convert_2, text)
  32.     case convert_2
  33.     when "u"
  34.       return self.u2a(text)
  35.     when "a"
  36.       return self.a2u(text)
  37.     end
  38.   end
  39. end
复制代码

点评

搞不懂,求二連O O  发表于 2010-10-10 03:02
ASCII 和 ANSI 还是有区别的,此处应为 ANSI o.o  发表于 2010-10-10 03:00
i / 2 改 i 就好了  发表于 2010-10-9 21:12
用Iconv.u2a转换出的变量(p命令显示乱码) 只有1半的字节这是为什么类? 把变量*2(又被吞掉1半) 这样可以临时解决...  发表于 2010-10-9 21:06
能用呢 谢谢  发表于 2010-10-9 19:28

评分

参与人数 1星屑 +200 收起 理由
IamI + 200 认可答案

查看全部评分

不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
10
发表于 2010-10-9 06:51:08 | 只看该作者
我脑残了 = =|| UTF-8 是输入端(编码端)定的,和获取输入之后的 $KCODE (解码端)没关系,那样的话就只能转码了,看禾西给的脚本

评分

参与人数 1星屑 +20 收起 理由
IamI + 20 安慰= =b

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-27 10:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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