精华内容
下载资源
问答
  • cocos2x-lua unicode 转码

    2015-07-14 06:31:30
    lua中向google请求了一段翻译结果,得到了一行字符串:{"from":"auto","to":"ko","src":"hello","res":"\uc548\ub155\ud558\uc138\uc694"},本来应该是一段直接可以解析的json但是,后面的unicode编码会报错。...
  • Lua Unicode

    2011-09-22 20:42:00
    From:http://lua-users.org/wiki/LuaUnicode Pattern Matching Lua's pattern matching facilities work character by ... In general, this will not work for Unicode pattern matching, although some t...

    From:http://lua-users.org/wiki/LuaUnicode

    Pattern Matching

    Lua's pattern matching facilities work character by character. In general, this will not work for Unicode pattern matching, although some things will work as you want. For example, "%u" will not match all Unicode upper case letters. You can match individual Unicode characters in a normalized Unicode string, but you might want to worry about combining character sequences. If there are no following combining characters, "a" will match only the letter a in a UTF-8 string. In UTF-16LE you could match "a%z". (Remember that you cannot use \0 in a Lua pattern.)

    Length and string indexing

    If you want to know the length of a Unicode string there are different answers you might want according to the circumstances.

    If you just want to know how many bytes the string occupies, so that you can make space for copying it into a buffer for example, then the existing Lua function string.len will work.

    You might want to know how many Unicode characters are in a string. Depending on the encoding used, a single Unicode character may occupy up to four bytes. Only UTF-32LE and UTF-32BE are constant length encodings (four bytes per character); UTF-32 is mostly a constant length encoding but the first element in a UTF-32 sequence should be a "Byte Order Mark", which does not count as a character. (UTF-32 and variants are part of Unicode with the latest version, Unicode 4.0.)

    Some implementations of UTF-16 assume that all characters are two bytes long, but this has not been true since Unicode version 3.0.

    Happily UTF-8 is designed so that it is relatively easy to count the number of unicode symbols in a string: simply count the number of octets that are in the ranges 0x00 to 0x7f (inclusive) or 0xC2 to 0xF4 (inclusive). (In decimal, 0-127 and 194-244.) These are the codes which can start a UTF-8 character code. Octets 0xC0, 0xC1 and 0xF5 to 0xFF (192, 193 and 245-255) cannot appear in a conforming UTF-8 sequence; octets in the range 0x80 to 0xBF (128-191) can only appear in the second and subsequent octets of a multi-octet encoding. Remember that you cannot use \0 in a Lua pattern.

    For example, you could use the following code snippet to count UTF-8 characters in a string you knew to be conforming (it will incorrectly count some invalid characters):

            local _, count = string.gsub(unicode_string, "[^\128-\193]", "")
    

    If you want to know how many printing columns a Unicode string will occupy when you print it out using a fixed-width font (imagine you are writing something like the Unix ls program that formats its output into several columns), then that is a different answer again. That's because some Unicode characters do not have a printing width, while others are double-width characters. Combining characters are used to add accents to other letters, and generally they do not take up any extra space when printed.

    So that's at least 3 different notions of length that you might want at different times. Lua provides one of them (string.len) the others you'll need to write functions for.

    There's a similar issue with indexing the characters of a string by position. string.sub(s, -3) will return the last 3 bytes of the string which is not necessarily the same as the last three characters of the string, and may or may not be a complete code.

    You could use the following code snippet to iterate over UTF-8 sequences (this will simply skip over most invalid codes):

            for uchar in string.gfind(ustring, "([%z\1-\127\194-\244][\128-\191]*)") do
              -- something
            end
    

    转载于:https://www.cnblogs.com/superchao8/archive/2011/09/22/2185484.html

    展开全文
  • lua utf8 unicode ansi 转换

    热门讨论 2012-03-06 00:40:57
    a2w(ansi to unicode) u2w(utf8 to unicode) w2a(unicode to ansi) w2u(unicode to utf8) u2a(utf8 to ansi) a2u(ansi to utf8) bstr(bytes of str) help(show this) wunoman@qq.com 2012/03/06
  • -- value: Unicode值 -- str : Unicode值对应字符 GameUtils.UnicodeToUTF_8Str = function(value) local str -- 先把Unicode值表示二进制转成Utf_8格式, 在string.char返回字符 if value < 128 then -- ...

    -- value: Unicode值
    -- str  : Unicode值对应字符
    GameUtils.UnicodeToUTF_8Str = function(value)
        local str
        -- 先把Unicode值表示二进制转成Utf_8格式, 在string.char返回字符
        if value < 128 then -- (Utf_8格式 = [0xxxxxxx])(128 = 1 0000000)
            str = string.char(value)
        elseif value < 2048 then -- (Utf_8格式 = [110xxxxx]-[10xxxxxx]) (2048 = 1 00000 000000)
            local byte1 = 128 + value % 64
            local byte2 = 192 + math.floor(value / 64)
            str = string.char(byte2, byte1)
        elseif value < 65536 then -- (Utf_8格式 = [1110xxxx]-[10xxxxxx]-[10xxxxxx]) (65536 = 1 0000 000000 000000)
            local byte1 = 128 + value % 64
            local byte2 = 128 + (math.floor(value / 64) % 32)
            local byte3 = 224 + (math.floor(value / 4096) % 16)
            str = string.char(byte3, byte2, byte1)
        end
        return str
    end

    展开全文
  • Lua脚本中使用Unicode

    千次阅读 2015-04-19 09:37:39
    如何在lua脚本中使用Unicode是本文要介绍的内容,主要是来学习Unicodelua脚本中如何使用,具体内容来看本文详细内容讲解。说说最近的几个事情: 1、project采用lua,ui模块肯定是要彻底使用utf-16的,可是lua不...


        如何在lua脚本中使用Unicode是本文要介绍的内容,主要是来学习Unicodelua脚本中如何使用,具体内容来看本文详细内容讲解。说说最近的几个事情:

    1、project采用lua,ui模块肯定是要彻底使用utf-16的,可是lua不支持,怎么办?最后好像是写了userdata,可以将multibytes转成utf-16保存在这个userdata中;接着为了保证字符串相同的userdata做key时是相同的,于是又添加了相应的避免重复功能;最后还为这个userdata在gc方面作了保证。

    2、google:lua unicode,会发现一份通过table使用unicode的文章传得很广,实际上很不实用——需要工具,字符串不可读。

    3、魔兽世界的lua脚本保存格式为utf-8,他的脚本中有一段是直接写文字信息的,所以这种保存格式比较有利。

    4、看过战锤OL的插件,无意中看到类似   s = L"战锤OL"  的代码,心想难道lua支持unicode了?试了一下发现没有,于是觉得是不是他们的程序修改了lua的parser了。不久后的现在,脑袋终于开窍了。

    其实不少实力派的前人早就强调过lua在unicode方面的解决方案了:lua string是一个raw buffer,可以存放任意数据。这个说法虽然正确却太抽象,因为他们都没有交代过具体的实现手法。

    我们想要的所谓支持unicodelua,到底是什么意思呢,最基础的大概就是能像c那样,用L作为字符串的前缀,并能将字符串赋值到变量上,就像上面的

    s = L"战锤OL" 

    注意这句代码,你看出什么了吗?再明确一些

    s = L("战锤OL") 

    感谢lua这种可忽略的写法,可以让lua写一些很漂亮的内容,除了string,还有table。

    只要L是一个函数,接受multibytes字符串作为参数,转化为utf-16,然后将utf-16的字符串交给lua string,压栈。

    这里要回头说说最上面所说的project,我不需要userdata了,因为他可以是一个lua string,相同的字符串做key的同质性?gc?通通都交给lua string吧,这里没你的事了。

    最后,贴一下代码,收功

    int utf8_to_utf16(lua_State* L)  
    {  
       size_t n = 0;  
        char* str = (char*)luaL_checklstring(L, -1, &n);  
        if(!str)   
            return 0;  
         iconv_t h = iconv_open("utf-16", "utf-8");  
        if(0==h)   
            return 0;  
          
        char wstr[4096];  
        size_t wn = 4096;  
        char** ppsrc = &str;  
        char* dst = wstr;  
        char** ppdst = &dst;  
        int ret = iconv(h, ppsrc, &n, ppdst, &wn);  
        if(ret==-1 || wn<0 || n>0)  
        {  
            iconv_close(h);  
            return 0;  
        }  
        iconv_close(h);  
        lua_pushlstring(L, (char*)wstr, (4096-wn));  
        return 1;  
    }  
    //here here  
    lua_register(L, "L", utf8_to_utf16);

     

    展开全文
  • lua脚本中使用unicode

    千次阅读 2014-02-23 18:29:16
    说说最近的几个事情1.project采用lua,ui模块肯定是要彻底使用utf-16的,可是lua不支持,怎么办?最后好像是写了userdata,可以将multibytes转成utf-16保存在这个userdata中;接着为了保证字符串相同的userdata做key...
    说说最近的几个事情
    
    1.project采用lua,ui模块肯定是要彻底使用utf-16的,可是lua不支持,怎么办?最后好像是写了userdata,可以将multibytes转成utf-16保存在这个userdata中;接着为了保证字符串相同的userdata做key时是相同的,于是又添加了相应的避免重复功能;最后还为这个userdata在gc方面作了保证。
    2.google:lua unicode,会发现一份通过table使用unicode的文章传得很广,实际上很不实用——需要工具,字符串不可读。
    3.魔兽世界的lua脚本保存格式为utf-8,他的脚本中有一段是直接写文字信息的,所以这种保存格式比较有利。
    4.看过战锤OL的插件,无意中看到类似    s = L"战锤OL"   的代码,心想难道lua支持unicode了?试了一下发现没有,于是觉得是不是他们的程序修改了lua的parser了。不久后的现在,脑袋终于开窍了。

    其实不少实力派的前人早就强调过lua在unicode方面的解决方案了:lua string是一个raw buffer,可以存放任意数据。这个说法虽然正确却太抽象,因为他们都没有交代过具体的实现手法。
    我们想要的所谓支持unicode的lua,到底是什么意思呢,最基础的大概就是能像c那样,用L作为字符串的前缀,并能将字符串赋值到变量上,就像上面的
    s = L"战锤OL"
    注意这句代码,你看出什么了吗?再明确一些
    s = L("战锤OL")
    感谢lua这种可忽略的写法,可以让lua写一些很漂亮的内容,除了string,还有table。
    只要L是一个函数,接受multibytes字符串作为参数,转化为utf-16,然后将utf-16的字符串交给lua string,压栈。
    这里要回头说说最上面所说的project,我不需要userdata了,因为他可以是一个lua string,相同的字符串做key的同质性?gc?通通都交给lua string吧,这里没你的事了。

    最后,贴一下代码,收功

    int utf8_to_utf16(lua_State* L)
    {
        size_t n = 0;
        char* str = (char*)luaL_checklstring(L, -1, &n);
        if(!str) 
            return 0;
    
        iconv_t h = iconv_open("utf-16", "utf-8");
        if(0==h) 
            return 0;
        
        char wstr[4096];
        size_t wn = 4096;
        char** ppsrc = &str;
        char* dst = wstr;
        char** ppdst = &dst;
        int ret = iconv(h, ppsrc, &n, ppdst, &wn);
        if(ret==-1 || wn<0 || n>0)
        {
            iconv_close(h);
            return 0;
        }
        iconv_close(h);
    
        lua_pushlstring(L, (char*)wstr, (4096-wn));
        return 1;
    }
    
    
    //here here
    lua_register(L, "L", utf8_to_utf16);


    展开全文
  • 中文与unicode之间的相互转换,没有用CString,Linux和Windows应该都可以使用。是网上的代码,只是搬运。但是找了很久才找到的好东西。 几个关键字:wchar_t* char* WideCharToMultiByte mbstowcs wcstombs
  • Unicode与UTF-8互转(c语言和lua语言)

    千次阅读 2018-02-02 14:37:15
     对于单字节的符号, 字节的第一位设为0, 后面7位为这个符号的unicode码. 因此对于  英语字母, UTF-8编码和ASCII码是同样的. 2)  对于n字节的符号 (n>1) , 第一个字节的前n位都设为1, 第n+1位设为0, 后面...
  • 开始学习LUA,在LUA中使用UNICODE字符串

    千次阅读 2008-12-05 00:30:00
    新买到LUA程序设计(第2版)开始学习LUA程序设计。 今天测试用LUA调用windows的MessageBoxW函数。需要在LUA中定义UNICODE字符串。...如字符串"LUA"如果使用UNICODELUA中表示为: Code highlighting p
  • lua中怎么从utf16转到utf8 ? 从网上找到个js的实现方法,但是不知道参数是什么, ``` function utf16ToUtf8(s){ if(!s){ return; } var i, code, ret = [], len = s.length; for(i = 0; i ; i++){ ...
  • gcc Lua_Unicode.c -I"C:\MinGW\include\lua" -L"C:\MinGW\lib" -lmingw32 -llua -lcomdlg32 -shared -o C:\Lua_Unicode.dll ##How to Use --假定dll文件位于C:\Lua_Unicode.dll --假定中文路径的文件名为C:\哈哈....
  • 研究了几天,写了一个ANSI UNICODE UTF-8的lua扩展,以便使用 基本上应该还可以用(-_-|) (链接中的永硕网盘提供相应的Unicode.dll下载) 更新历史: 2008-11-3 修正getallfilews函数使用内存浪费问题(分配...
  • lua实现 utf-16le 和 utf-8互转

    千次阅读 2016-03-16 16:08:26
    elseif unicode >= 0x0080 and unicode resultStr[len] = string.char(bit.bor(0xc0,bit.band(bit.rshift(unicode,6),0x1f))) len = len + 1; resultStr[len] = string.char(bit.bor(0x80,bit.band(unicode,...
  • 我们也可以使用任意一种编码方式(UTF-8、UTF-16等)来存储Unicode字符串(在文章下面会详细介绍) 二、字符串常量 我们可以使用一对双引号或者单引号来声明字符串常量。例如: a = "a line" a b = 'another ...
  • 前段时间写的一个将Unicode字符转换为中文的方法,分享下,希望各位能指出其中的问题,呵呵。  public static String ToChinese(String str) { //将Unicode字符转换为中文 Pattern p = Pattern.compile("&...
  • --(c>=48 and c<=57)数字 --(c>= 65 and c<=90)大写字母 --(c>=97 and c<=122)小写字母 ...--判断是否由汉字,大小写字母组成 ...function Balance:GetStringA_Z_Chinese(str) ...whil...
  • 电晕 lua 导出 + Unicode 支持 您需要 bmGlyph 2.0.3 及更高版本,并选择“Corona 2.0”发布设置,这将创建一个 .png 和 .lua 文件。 如何使用: 在你的项目中导入 bmf2.lua + bmf_utf8.lua,然后: require('bmf...
  • Lua 字符串

    2016-11-26 15:56:24
    Lua 字符串 不得不说,字符和字符串 基本对所有语言来说都有不同的表示方式,同时也对这个数据类型来说 掌握的方法又是多种多样 ,重点学习之一 Lua 字符串 字符串或串(String)是由数字、字母、下划线组成...
  • Lua 5.1 UTF-8 需要全局“位”库,例如LuaJIT ... 除了utf8.force外,所有功能均在Lua 5.3的“ utf8”库文档中进行了记录,该库用utf8.force替换了所有无效的UTF-8序列,并使用了Unicode“替换字符”(U + FFFD)。
  • 警告:在尝试转换输入文件之前,请始终对其进行验证(并删除Unicode BOM); LuaXML的解析器可能对格式错误的XML进行OOM或段错误。 此外,不保证framexml2lua的输出正确或安全; 使用常识并在自己运行Lua之前先阅读...
  • lua utf-8字符的相关操作,字符裁剪 获取字符长度等操作,能准确的获得中文字符长度。
  • Cocos2d-x 解析json中的Unicode乱码

    千次阅读 2015-02-06 15:04:47
    准确说,是Cocos2d-x Lua,在解析服务器端传过来的json数据时,由于里面存着UTF-8的中文,也就是unicode编码的东西,解出来乱码。 原因是:在lua的json解析时,算法有bug,把"/"解析丢了。 解决办法: ...
  • lua正则表达式

    2021-01-27 06:56:02
    lua中的正则表达式,规则如图:常用示例,代码如下:-- 去掉首尾所有空格function trim(s)return (string.gsub(s, "^%s*(.-)%s*$", "%1"))endlocal s = " space "local txt = trim(s)print(string.len(s), string....
  • 通过填充初始,中性和最终辅音来组装Unicode Hangul辅音 您可以使用KLua的合并功能合并韩国辅音。 用法示例如下。 KLua. merge ({ " ㅁ " , " ㅣ " , " ㅋ " }) -- 밐 您也可以通过仅输入超级声音和中性声音而
  • 关于cocos2dx中文转UTF8码的解决方案

    千次阅读 2014-09-23 11:52:37
    转载请注明出处:帘卷西风的专栏... 通常来说,目前的解决方案有以下几种: 1、把代码文件(.h/.cpp/.lua等)的文件编码格式改成UTF-8格式即可,这对于单机游戏来说是很好的解决方案。但是对于服务器传过来的
  • Lua学习(一):lua与luaJit简介

    万次阅读 2019-07-24 14:50:32
    一、什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言,luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。 二、优势 ...
  • 在使用LuaXml解析xml报文时,如果xml报文中带有unicode编码,解码后依然是unicode编码,无法被解析成实际的内容,这种情况需要修改Lua_XML_lib.c,修改如下将251行到257行替换成如下内容: while(pos &...
  • Lua 有可以访问数据库。虽然 Lua 既没有官方的访问数据库的模块,也没有像 Python 输出 DB-API 规范。但 Lua 社区开发了 LuaSQL。LuaSQL 是 Lua 语言访问数据库最好的模块之一,它是开源的,支持的数据库有:ODBC, ...
  • Lua 字符与ASCII码互转

    千次阅读 2021-03-02 16:00:02
    字符转ASCII码 string.byte(s[,i[,j]]) 返回字符s[i],s[i+1],... ,s[j]的内部数字编码。i的默认值是1;j的默认值是i。 ...print(string.byte("a")) print(string.byte("fightsyj", 1, 5)) ...其中每个字符的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,440
精华内容 1,776
关键字:

luaunicode