在用org.json.JSONObject 解析从网络获取的json数据时,遇到JSONException: java.lang.String cannot be converted to JSONObject,打印字符串,查看json字符串没有问题,研究了好长时间,终于找到问题,造成问题的原因是在编写json文件的时候,采用utf-8编码,utf8有个BOM格式,去掉这个格式就ok了。如何去掉呢
汉字'我' Unicode编码是 0x6211 0110 0010 00 010001 UTF8编码是 0xe68891 1110 0110 10 001000 100 010001 oxc0 11000000 0xE0 11100000 | Unicode符号范围 | UTF-8编码方式 n | (十六进制)
-- convert numeric html entities to utf8
-- converts from stdin to stdout
-- example: € -> €
local char = string.char
local function tail(n, k)
local u, r=''
for i=1,k do
n,r = math.
function GameScene:truncateUTF8String(s, n)
local dropping = string.byte(s, n+1)
if not dropping then return s end
if dropping >= 128 and dropping < 192 then
return self:truncateUTF8String(s
lua 的string库不支持处理utf-8编码的汉字。用lua要处理汉字还是很费劲的。 UTF8的编码规则: 1. 字符的第一个字节范围: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致 2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不会出现在U
UTF-8字符串工具类 Lua代码:utf8_simple.lua -- ABNF from RFC 3629
--
-- UTF8-octets = *( UTF8-char )
-- UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
-- UTF8-1 = %x00-7F
-- UTF8-2 = %xC2-DF UTF8-tail
-- UTF8-3
原文网址:https://github.com/alexander-yakushev/awesomerc/blob/master/awesompd/utf8.lua -- Provides UTF-8 aware string functions implemented in pure lua: -- * string.utf8len(s) -- * string.utf8sub(s, i, j)
在做 游戏 用户注册时 用户名要求:只能全是英文字母 或者 只能是汉字 这个时候出现一个问题 汉字该怎么检查呢 local str1 = "发烧发的撒地方" if str1:match("^[\128-\254]+$") then print("-----------ok2") else print("-------------not ok2") end 从网上找了上述方法
function SubUTF8String(s, n)
local dropping = string.byte(s, n+1)
if not dropping then return s end
if dropping >= 128 and dropping < 192 then
return SubUTF8String(s, n-1)
end
今天需要使用cocos2dx的lable一行显示不完,但是第二行又要居中的情况,于是就想到采用字符串分隔,第一行显示几个,剩下的显示在第二行。 但是使用的utf-8编码,而且使用的是lua,lua本身库没有这方面的函数,于是上网找了一番,有很多大牛共享了一些方法,可以拿来用。 参考: https://github.com/easysoft/zentaomobile/blob/master/coro
自lua 5.3开始支持utf8编码的脚本文件 测试时发现lua能够正确处理utf8编码的文本文件 但中文函数名(多字节字符)依然不支持 需要改造的地方就是llex.c中的llex函数 default分支的代码改为 default: {
/* identifier or utf8 or reserved word? */
if (lislalpha(ls->curr
lua 的string库不支持处理utf-8编码的汉字。用lua要处理汉字还是很费劲的。 UTF8的编码规则: 1. 字符的第一个字节范围: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致 2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不会出现在U
--- 获取utf8编码字符串正确长度的方法 -- @param str -- @return number function utfstrlen(str) local len = #str; local left = len; local cnt = 0; local arr={0,0xc0,0xe0,0xf0,0xf8,0xfc}; while left ~= 0 do local tmp=s
UTF8的编码规则: 1. 字符的第一个字节范围: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致 2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不会出现在UTF8编码中 3. 0x80—0xBF(128-191)只会出现在第二个及随后的编码中(针
function FormotGameNickName(nickname,len) if nickname==nil then return "" end local lengthUTF_8 = #(string.gsub(nickname, "[\128-\191]", "")) if lengthUTF_8 <= len then
lua5.3虽然支持utf-8,但是自带的string库不支持汉字的处理,而且lua的 正则实现也比较鸡肋,很难匹配中文。所以文章讨论UTF-8字符集,中文汉字的表示方法,然后说明lua 如何匹配UTF-8中文汉字。 初识UTF-8 UTF-8是Unicode的一种实现,是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位
解决string.len 处理 utf-8 中文字符不正确的问题。因为这个返回的结果是字节数(不是字符数),比如 UTF-8 里一个中文得到 3,在 GBK 里一个中文得到2。 据说是有个 string.utf8len 还是 string.lenutf8 可以用,但是试了一下发现貌似没有这个函数 幸亏GitHub上有大神贴出了代码,效果非常好 https://github.com/airtonix
lua的utf8互转gbk编码方法, 基于linux下实现,使用lua-iconv的. 安装: luarocks install lua-iconv 安装过程感觉有点慢,那个lua-iconv网址有时获取不到,不行的时候就再尝试下吧. 然后以下就是转换代码: local iconv = require("iconv")
http=require("socket.http")
function
-- 计算 UTF8 字符串的长度,每一个中文算一个字符 -- @function [parent=#string] utf8len -- @param string input 输入字符串 -- @return integer#integer 长度 计算 UTF8 字符串的长度,每一个中文算一个字符 local input = "你好World" print(string.utf8len(in
lua 的string库不支持处理utf-8编码的汉字。用lua要处理汉字还是很费劲的。 UTF8的编码规则: 1. 字符的第一个字节范围: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致 2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不会出现在U