北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 12210|回复: 15

關於MUSH sqlite database

[复制链接]
发表于 2009-12-16 03:33:05 | 显示全部楼层 |阅读模式
大家好..

我是一個在別的mud 裏玩的玩家. 但遇到了一些有關mush 的問題.

在這裏好像研究mush 的玩家還比較多. 我想在這邊也許能得到些解答.

這個問題我在mush 官網上有問過. 但沒有Nick 和咱們的系統不一樣. 他沒辦法做一些測試.

我想請大家幫幫忙. 在這裏先謝過大家了..

問題就是.

在從sqlite database 裏讀取3 個中文 (9個字節 )時. 只能得到8 個.
但在讀取4 個中文時則正常. 能夠得到完整的12 個字符.

如果各位大俠對此有解決之道還望 給小弟點幫助.
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-16 09:11:05 | 显示全部楼层
没用过mush,不过sqlite本身没有这个问题。他是unicode的,不存在半个中文字的问题。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-16 10:33:10 | 显示全部楼层
问题可能出现在转码上。

不知你的sqlite database采用什么编码(utf-8 or ansi)?

你所在的MUD是用UTF-8显示中文字符的么?

是否采用了转码工具?如果采用了转码工具,是什么?怎么转的?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-16 18:34:16 | 显示全部楼层
恩.. 我現在很確定這是mush 在中文系統中的一個bug.
其實只有3 句code 就可以表現出這個bug 了

給某變量(如a) 一個高位字符(如 0xE5 )之後setvariable("test", a) 再getvariable("test")  ...

會發現得到了一個空串
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-16 18:36:55 | 显示全部楼层
更嚴格的講..  

0x80沒有問題

0x81 就會直接變0...
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-16 20:01:06 | 显示全部楼层
飘过
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-16 21:43:27 | 显示全部楼层
还好只是SetVariable()/GetVariable()有这个问题,只是MUSH自己封装的函数,还可以用LUA,想其它办法绕过去。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-16 21:49:10 | 显示全部楼层
http://www.gammon.com.au/scripts/function.php?name=SetVariable

仔细看一下这个,用SetVariable(),看来要转base64。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-16 21:54:07 | 显示全部楼层
自己测试了一下:


  1. function sss_a()
  2. local aa = string.char(0x81)
  3. SetVariable("test1", utils.base64encode(aa))
  4. print(utils.base64decode(GetVariable("test1")))
  5. print(aa)
  6. end -- sss_a()
复制代码


有点意思……
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-16 22:07:52 | 显示全部楼层
great .

Thanks a lot :)
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-25 08:51 AM , Processed in 0.012782 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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