解决汉字显示问题的一种方法:
在本地文件中添加一个txt文件,文件的格式是前面写序号后面写汉字的格式,然后再需要用到的地方直接读取本地文件中的文字再绘制上去。
--汉字字典
local tDictTable = {"Id", "Content"}
local DictTableFilePath =
cc.FileUtils:getInstance():fullPathForFilename("Config/DictTbl.txt")
DictTbl.txt是本地文件名字
g_DictTable = GetTableFromFileWithKeyTable(DictTableFilePath, tDictTable)
Local str = g_DictTable[1]["Content"];
如果txt文件中是这么写的:
1 好玩
.
.
.
那么读出来的str就是 “好玩”,GetTableFromFileWithKeyTable把读出来的txt文件按照/r/n
来分割,并把分割出来的字符串放进数组中,然后通过数组下标来读取。
--获取table: 根据文件和key列表
local function GetTableFromFileWithKeyTable(file_name, keyTable)
print("in txtConvertT")
mainTable = {}
mainTableIndex = 1
fileRowIndex = 1
-- 单行读取遍历 lua
--local file = io.open(file_name);
---for line in file:lines() do
-- 单行读取遍历 cocos
local data = cc.FileUtils:getInstance():getStringFromFile(file_name)
local rowArray = getAryFromRow(data, "\r\n")
for index, line in pairs(rowArray) do
--
local len = string.len(line)
if fileRowIndex >= startRow and len > 0 then
local subTable = {}
rowArray = getAryFromRow(line, verStr)
for index, value in pairs(keyTable) do
--print("index=", index, "value=", value)
tempValue = rowArray[index]
--add convert to c
--local utf8 = GBKToUtf8String(tempValue)
subTable[value] = tempValue
end
--mainTable[mainTableIndex] = subTable
local idIndex = StringToInt(rowArray[1]);
mainTable[idIndex] = subTable
mainTableIndex = mainTableIndex + 1
else
end
fileRowIndex = fileRowIndex + 1
end
return mainTable
End
--(table)getAryFromRow(tagStr,byStr)
-- 获取table: 以指定字符串(tagStr)按照bystr分割后得到的数组
function getAryFromRow(tagStr, byStr)
rowArray = {}
local index = 1
local stop = 0
local resultStr
while stop == 0 do
local startLocal, endLocal = string.find(tagStr, byStr)
if startLocal == nil then
resultStr = tagStr
--print("resultStr2==", resultStr)
rowArray[index] = resultStr
break
else
end
if startLocal >= 0 then
resultStr = string.sub(tagStr, 1, startLocal - 1)
--print("resultStr1==", resultStr)
local tempStartLocal = startLocal + string.len(byStr)
tagStr = string.sub(tagStr, tempStartLocal, string.len(tagStr))
rowArray[index] = resultStr
index = index + 1
else
stop = 1
end
end
return rowArray
end