main.lua 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "iconv_demo"
  3. VERSION = "1.0"
  4. --- unicode小端编码 转化为 gb2312编码
  5. -- @string ucs2s unicode小端编码数据
  6. -- @return string data,gb2312编码数据
  7. -- @usage local data = common.ucs2ToGb2312(ucs2s)
  8. function ucs2ToGb2312(ucs2s)
  9. local cd = iconv.open("gb2312", "ucs2")
  10. return cd:iconv(ucs2s)
  11. end
  12. --- gb2312编码 转化为 unicode小端编码
  13. -- @string gb2312s gb2312编码数据
  14. -- @return string data,unicode小端编码数据
  15. -- @usage local data = common.gb2312ToUcs2(gb2312s)
  16. function gb2312ToUcs2(gb2312s)
  17. local cd = iconv.open("ucs2", "gb2312")
  18. return cd:iconv(gb2312s)
  19. end
  20. --- unicode大端编码 转化为 gb2312编码
  21. -- @string ucs2s unicode大端编码数据
  22. -- @return string data,gb2312编码数据
  23. -- @usage data = common.ucs2beToGb2312(ucs2s)
  24. function ucs2beToGb2312(ucs2s)
  25. local cd = iconv.open("gb2312", "ucs2be")
  26. return cd:iconv(ucs2s)
  27. end
  28. --- gb2312编码 转化为 unicode大端编码
  29. -- @string gb2312s gb2312编码数据
  30. -- @return string data,unicode大端编码数据
  31. -- @usage local data = common.gb2312ToUcs2be(gb2312s)
  32. function gb2312ToUcs2be(gb2312s)
  33. local cd = iconv.open("ucs2be", "gb2312")
  34. return cd:iconv(gb2312s)
  35. end
  36. --- unicode小端编码 转化为 utf8编码
  37. -- @string ucs2s unicode小端编码数据
  38. -- @return string data,utf8编码数据
  39. -- @usage data = common.ucs2ToUtf8(ucs2s)
  40. function ucs2ToUtf8(ucs2s)
  41. local cd = iconv.open("utf8", "ucs2")
  42. return cd:iconv(ucs2s)
  43. end
  44. --- utf8编码 转化为 unicode小端编码
  45. -- @string utf8s utf8编码数据
  46. -- @return string data,unicode小端编码数据
  47. -- @usage local data = common.utf8ToUcs2(utf8s)
  48. function utf8ToUcs2(utf8s)
  49. local cd = iconv.open("ucs2", "utf8")
  50. return cd:iconv(utf8s)
  51. end
  52. --- unicode大端编码 转化为 utf8编码
  53. -- @string ucs2s unicode大端编码数据
  54. -- @return string data,utf8编码数据
  55. -- @usage data = common.ucs2beToUtf8(ucs2s)
  56. function ucs2beToUtf8(ucs2s)
  57. local cd = iconv.open("utf8", "ucs2be")
  58. return cd:iconv(ucs2s)
  59. end
  60. --- utf8编码 转化为 unicode大端编码
  61. -- @string utf8s utf8编码数据
  62. -- @return string data,unicode大端编码数据
  63. -- @usage local data = common.utf8ToUcs2be(utf8s)
  64. function utf8ToUcs2be(utf8s)
  65. local cd = iconv.open("ucs2be", "utf8")
  66. return cd:iconv(utf8s)
  67. end
  68. --- utf8编码 转化为 gb2312编码
  69. -- @string utf8s utf8编码数据
  70. -- @return string data,gb2312编码数据
  71. -- @usage local data = common.utf8ToGb2312(utf8s)
  72. function utf8ToGb2312(utf8s)
  73. local cd = iconv.open("ucs2", "utf8")
  74. local ucs2s = cd:iconv(utf8s)
  75. cd = iconv.open("gb2312", "ucs2")
  76. return cd:iconv(ucs2s)
  77. end
  78. --- gb2312编码 转化为 utf8编码
  79. -- @string gb2312s gb2312编码数据
  80. -- @return string data,utf8编码数据
  81. -- @usage local data = common.gb2312ToUtf8(gb2312s)
  82. function gb2312ToUtf8(gb2312s)
  83. local cd = iconv.open("ucs2", "gb2312")
  84. local ucs2s = cd:iconv(gb2312s)
  85. cd = iconv.open("utf8", "ucs2")
  86. return cd:iconv(ucs2s)
  87. end
  88. --------------------------------------------------------------------------------------------------------
  89. --[[
  90. 函数名:ucs2ToGb2312
  91. 功能 :unicode小端编码 转化为 gb2312编码,并打印出gb2312编码数据
  92. 参数 :
  93. ucs2s:unicode小端编码数据,注意输入参数的字节数
  94. 返回值:
  95. ]]
  96. local function testucs2ToGb2312(ucs2s)
  97. print("ucs2ToGb2312")
  98. local gb2312num = ucs2ToGb2312(ucs2s)--调用的是common.ucs2ToGb2312,返回的是编码所对应的字符串
  99. -- print("gb2312 code:",string.toHex(gb2312num))
  100. print("gb2312 code:" .. string.toHex(gb2312num))
  101. end
  102. --[[
  103. 函数名:gb2312ToUcs2
  104. 功能 :gb2312编码 转化为 unicode十六进制小端编码数据并打印
  105. 参数 :
  106. gb2312s:gb2312编码数据,注意输入参数的字节数
  107. 返回值:
  108. ]]
  109. local function testgb2312ToUcs2(gb2312s)
  110. print("gb2312ToUcs2")
  111. local ucs2num = gb2312ToUcs2(gb2312s)
  112. print("unicode little-endian code:" .. string.toHex(ucs2num)) -- 要将二进制转换为十六进制,否则无法输出
  113. end
  114. --[[
  115. 函数名:ucs2beToGb2312
  116. 功能 :unicode大端编码 转化为 gb2312编码,并打印出gb2312编码数据,
  117. 大端编码数据是与小端编码数据位置调换
  118. 参数 :
  119. ucs2s:unicode大端编码数据,注意输入参数的字节数
  120. 返回值:
  121. ]]
  122. local function testucs2beToGb2312(ucs2s)
  123. print("ucs2beToGb2312")
  124. local gb2312num = ucs2beToGb2312(ucs2s) -- 转化后的数据直接变成字符可以直接输出
  125. print("gb2312 code :" .. string.toHex(gb2312num))
  126. end
  127. --[[
  128. 函数名:gb2312ToUcs2be
  129. 功能 :gb2312编码 转化为 unicode大端编码,并打印出unicode大端编码
  130. 参数 :
  131. gb2312s:gb2312编码数据,注意输入参数的字节数
  132. 返回值:unicode大端编码数据
  133. ]]
  134. function testgb2312ToUcs2be(gb2312s)
  135. print("gb2312ToUcs2be")
  136. local ucs2benum = gb2312ToUcs2be(gb2312s)
  137. print("unicode big-endian code :" .. string.toHex(ucs2benum))
  138. end
  139. --[[
  140. 函数名:ucs2ToUtf8
  141. 功能 :unicode小端编码 转化为 utf8编码,并打印出utf8十六进制编码数据
  142. 参数 :
  143. ucs2s:unicode小端编码数据,注意输入参数的字节数
  144. 返回值:
  145. ]]
  146. local function testucs2ToUtf8(ucs2s)
  147. print("ucs2ToUtf8")
  148. local utf8num = ucs2ToUtf8(ucs2s)
  149. print("utf8 code:" .. string.toHex(utf8num))
  150. end
  151. --[[
  152. 函数名:utf8ToGb2312
  153. 功能 :utf8编码 转化为 gb2312编码,并打印出gb2312编码数据
  154. 参数 :
  155. utf8s:utf8编码数据,注意输入参数的字节数
  156. 返回值:
  157. ]]
  158. local function testutf8ToGb2312(utf8s)
  159. print("utf8ToGb2312")
  160. local gb2312num = utf8ToGb2312(utf8s)
  161. print("gb2312 code:" .. string.toHex(gb2312num))
  162. end
  163. --[[
  164. 函数名:gb2312ToUtf8
  165. 功能 :gb2312编码 转化为 utf8编码,并打印出utf8编码数据
  166. 参数 :
  167. gb2312s:gb2312s编码数据,注意输入参数的字节数
  168. 返回值:
  169. ]]
  170. local function testgb2312ToUtf8(gb2312s)
  171. print("gb2312ToUtf8")
  172. local utf8s = gb2312ToUtf8(gb2312s)
  173. print("utf8s code:" .. utf8s)
  174. end
  175. sys.taskInit(function()
  176. log.info("iconv", PROJECT, VERSION)
  177. while 1 do
  178. sys.wait(1000)
  179. testucs2ToGb2312(string.fromHex("1162")) -- "1162"是"我"字的ucs2编码
  180. testgb2312ToUcs2(string.fromHex("CED2")) -- "CED2"是"我"字的gb2312编码
  181. testucs2beToGb2312(string.fromHex("6211")) -- "6211"是"我"字的ucs2be编码
  182. testgb2312ToUcs2be(string.fromHex("CED2"))
  183. testucs2ToUtf8(string.fromHex("1162"))
  184. testutf8ToGb2312(string.fromHex("E68891")) -- "E68891"是"我"字的utf8编码
  185. testgb2312ToUtf8(string.fromHex("CED2"))
  186. end
  187. end)
  188. -- 用户代码已结束---------------------------------------------
  189. -- 结尾总是这一句
  190. sys.run()
  191. -- sys.run()之后后面不要加任何语句!!!!!