Lua判断GB2312汉字

-- 判断GB2312汉字
function IsAllChinese(str)
	local nStrCount = string.len(str)
	if math.mod(nStrCount, 2) ~= 0 then
		return false
	end
	
	for i = 1, nStrCount-1, 2 do
		local nCurByte = string.byte(str, i)
		local nNextByte = string.byte(str, i+1)
		if not IsChineseCharacter(nCurByte, nNextByte) then
			return false
		end
	end
	
	return true
end

local nNum1Min 	= tonumber("0XB0", 16)
local nNum1Max	= tonumber("0XF7", 16)
local nNum2Min	= tonumber("0XA1", 16)
local nNum2Max 	= tonumber("0XFE", 16)

-- 判断字符是否是中文
function IsChineseCharacter(nCurByte, nNextByte)
	if not (nCurByte >= nNum1Min and nCurByte <= nNum1Max) then
		return false
	end
	
	if not (nNextByte >= nNum2Min and nNextByte <= nNum2Max)  then
		return false
	end
	
	return true
end

 

原理参照我写的两片字符编码的博客,看完就对字符编码了然于胸。

在 VSCode 中寻找支持 GB2312 编码的 Lua 代码格式化插件时,需结合编辑器对编码与格式化工具的兼容性进行配置。VSCode 本身支持多种编码格式的文件读写,包括 GB2312,但其内置的格式化工具通常默认使用 UTF-8 编码进行处理。因此,插件选择和配置是关键。 ### 代码格式化插件推荐 1. **Lua Language Server** 是 VSCode 中较为流行的 Lua 语言支持插件,它基于 Microsoft 的 Language Server Protocol,提供代码格式化、智能感知等功能。该插件本身不直接处理文件编码问题,但可以与 VSCode 的编码设置结合使用。只要文件以 GB2312 编码打开,插件即可在该编码环境下执行格式化操作 [^1]。 2. **Prettier** 也支持 Lua 代码格式化,但需要安装额外的插件,如 `prettier-plugin-lua`。Prettier 同样不直接处理编码转换,但可以在 VSCode 中配合 GB2312 编码设置使用。例如,在 `settings.json` 中启用保存时自动格式化,并确保文件以 GB2312 编码打开: ```json { "editor.formatOnSave": true, "files.encoding": "gb2312" } ``` 3. **LuaFormatter** 是一个专门用于 Lua 的格式化工具,可以通过 VSCode 的自定义任务配置集成到编辑器中。该工具本身不处理编码问题,但可以通过脚本在格式化前后进行编码转换,例如使用 `iconv` 工具将文件从 GB2312 转换为 UTF-8 再进行格式化,最后再转回 GB2312: ```bash iconv -f GB2312 -t UTF-8 input.lua | lua-format > output.lua && iconv -f UTF-8 -t GB2312 output.lua > input.lua ``` ### 配置建议 为确保 Lua 文件在 GB2312 编码下正确格式化,建议在 VSCode 的 `settings.json` 中设置默认编码为 GB2312,并根据所选格式化工具进行扩展配置: ```json { "[lua]": { "files.encoding": "gb2312", "editor.defaultFormatter": "sumneko.lua" }, "editor.formatOnSave": true } ``` 上述配置将 Lua 文件的默认编码设置为 GB2312,并指定 `sumneko.lua` 作为默认格式化工具。若格式化工具无法直接处理 GB2312 编码的文件,可考虑在保存前通过脚本自动转换编码,完成格式化后再转回 GB2312。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值