關於MUSH sqlite database
大家好..我是一個在別的mud 裏玩的玩家. 但遇到了一些有關mush 的問題.
在這裏好像研究mush 的玩家還比較多. 我想在這邊也許能得到些解答.
這個問題我在mush 官網上有問過. 但沒有Nick 和咱們的系統不一樣. 他沒辦法做一些測試.
我想請大家幫幫忙. 在這裏先謝過大家了..
問題就是.
在從sqlite database 裏讀取3 個中文 (9個字節 )時. 只能得到8 個.
但在讀取4 個中文時則正常. 能夠得到完整的12 個字符.
如果各位大俠對此有解決之道還望 給小弟點幫助. 没用过mush,不过sqlite本身没有这个问题。他是unicode的,不存在半个中文字的问题。 问题可能出现在转码上。
不知你的sqlite database采用什么编码(utf-8 or ansi)?
你所在的MUD是用UTF-8显示中文字符的么?
是否采用了转码工具?如果采用了转码工具,是什么?怎么转的? 恩.. 我現在很確定這是mush 在中文系統中的一個bug.
其實只有3 句code 就可以表現出這個bug 了
給某變量(如a) 一個高位字符(如 0xE5 )之後setvariable("test", a) 再getvariable("test")...
會發現得到了一個空串ttk_13 更嚴格的講..
0x80沒有問題
0x81 就會直接變0... 飘过 还好只是SetVariable()/GetVariable()有这个问题,只是MUSH自己封装的函数,还可以用LUA,想其它办法绕过去。 http://www.gammon.com.au/scripts/function.php?name=SetVariable
仔细看一下这个,用SetVariable(),看来要转base64。 自己测试了一下:
function sss_a()
local aa = string.char(0x81)
SetVariable("test1", utils.base64encode(aa))
print(utils.base64decode(GetVariable("test1")))
print(aa)
end -- sss_a()
有点意思…… great .ttk_05
Thanks a lot :)
页:
[1]
2