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

Project1

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

[已经解决] 内码转换问题GBK(936)转Shift-JIS(932)

[复制链接]

Lv1.梦旅人

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

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

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

x
比如 GBK(936)的"擔帍"转为Shift-JIS(932)的"日誌"

用RM读取的文件 文件是用Shift-JIS(932)做的 所以打开是乱码
我需要在RM里再转成正常文字

Lv5.捕梦者

梦石
0
星屑
22958
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
2
发表于 2013-10-2 18:20:22 | 只看该作者
RM读取的文件是用unicode的
不是GBK(936)或Shift-JIS(932)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
3
 楼主| 发表于 2013-10-2 19:20:14 | 只看该作者
本帖最后由 wbsy8241 于 2013-10-2 19:27 编辑
tseyik 发表于 2013-10-2 18:20
RM读取的文件是用unicode的
不是GBK(936)或Shift-JIS(932)


我不太懂这个
但我读到的"擔帍"
怎么转为"日誌"

读到的方法
1.open文件
2.unpack成16进制(不转为16进制读不全)
3.选取文本处16进制pack回来
4.转为unicode编码

由于在文件里是乱码 所以读到的也是乱码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
4
发表于 2013-10-2 22:38:03 | 只看该作者
自己转码不行吗,我记得文本编辑应该可以保存成不同编码的

点评

而且不是保存成不同编码就可以解决的.  发表于 2013-10-2 22:44
我要把得到的文本再写入另一个文件里,手动我会转  发表于 2013-10-2 22:43
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
5
发表于 2013-10-2 22:49:45 | 只看该作者
这个我就不懂了=。=
不过这个貌似有点用。。。?
  1. "Hi there".force_encoding 'utf-8'
复制代码

点评

LBQ
↓ 那么我无能为力了=。=,也许这里能帮助阁下:http://nuclearsquid.com/writings/ruby-1-9-encodings/  发表于 2013-10-2 23:13
没用  发表于 2013-10-2 22:55
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

6
发表于 2013-10-9 15:51:59 | 只看该作者
本帖最后由 Sion 于 2014-1-13 23:34 编辑

RUBY 代码复制
  1. class String# 转码--
  2.   MultiByteToWideChar = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  3.   WideCharToMultiByte = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  4.   CP_JIS  = 932
  5.   CP_UTF8 = 65001
  6.   def j2u
  7.     w2m(CP_UTF8, m2w(CP_JIS, self)).chop
  8.   end
  9.   # -
  10.   def m2w(cpi, buf)
  11.     nLen = MultiByteToWideChar.call(cpi, 0, buf, -1, nil, 0) * 2
  12.     wBuf = "\0" * nLen
  13.     MultiByteToWideChar.call(cpi, 0, buf, -1, wBuf, nLen)
  14.     return wBuf
  15.   end
  16.   def w2m(cpi, buf)
  17.     nLen = WideCharToMultiByte.call(cpi, 0, buf, -1, nil, 0, nil, nil) * 2
  18.     wBuf = "\0" * nLen
  19.     WideCharToMultiByte.call(cpi, 0, buf, -1, wBuf, nLen, nil, nil)
  20.     return wBuf
  21.   end
  22. end

读取Shift-JIS编码的文件:
RUBY 代码复制
  1. str = File.open(filename).read
  2. p str.j2u

点评

啥? 要怎么转不是你自己设定嘛 - -b  发表于 2013-10-9 16:19
介个V587啊,话说VA没有内置的地方可以修改地方吗?比如把unicode替换成GBK就完成转换之类的,我以前写代码都是在代码头说明这东西,也方便替换  发表于 2013-10-9 16:01

评分

参与人数 1星屑 +100 梦石 +1 收起 理由
迷糊的安安 + 100 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 10:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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