解决汉字显示问题的一种方法:

 

在本地文件中添加一个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

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信