无视编码都统一转成unicode 然后截断 例如 。“发发发发发发” 操作之后显示为 “发发发发...”
-- local function checkPlayName( str )
-- str = Utils.utf8_to_unicode(str)
-- local retStr = ""
-- local num = 0
-- local lenInByte = #str
-- local x = 1
-- for i=1,lenInByte do
-- i = x
-- local curByte = string.byte(str, x)
-- local byteCount = 1;
-- if curByte>0 and curByte<=127 then
-- byteCount = 1
-- elseif curByte>127 and curByte<240 then
-- byteCount = 3
-- elseif curByte>=240 and curByte<=247 then
-- byteCount = 4
-- end
-- local curStr = string.sub(str, i, i+byteCount-1)
-- retStr = retStr .. curStr
-- x = x + byteCount
-- if x >= lenInByte then
-- local finalRetStr = Utils.unicode_to_utf8(retStr)
-- return finalRetStr
-- end
-- num = num + 1
-- if num >= 24 then
-- retStr = retStr.."..."
-- local finalRetStr = Utils.unicode_to_utf8(retStr)
-- return finalRetStr
-- end
-- end
-- local finalRetStr = Utils.unicode_to_utf8(retStr)
-- return finalRetStr
-- end
-- Utils.checkPlayName = checkPlayName
-- local bit = require("bit")
-- local function unicode_to_utf8(convertStr)
-- if type(convertStr)~="string" then
-- return convertStr
-- end
-- local resultStr=""
-- local i=1
-- while true do
-- local num1=string.byte(convertStr,i)
-- local unicode
-- if num1~=nil and string.sub(convertStr,i,i+1)=="\\u" then
-- unicode=tonumber("0x"..string.sub(convertStr,i+2,i+5))
-- i=i+6
-- elseif num1~=nil then
-- unicode=num1
-- i=i+1
-- else
-- break
-- end
-- print(unicode)
-- if unicode <= 0x007f then
-- resultStr=resultStr..string.char(bit.band(unicode,0x7f))
-- elseif unicode >= 0x0080 and unicode <= 0x07ff then
-- resultStr=resultStr..string.char(bit.bor(0xc0,bit.band(bit.rshift(unicode,6),0x1f)))
-- resultStr=resultStr..string.char(bit.bor(0x80,bit.band(unicode,0x3f)))
-- elseif unicode >= 0x0800 and unicode <= 0xffff then
-- resultStr=resultStr..string.char(bit.bor(0xe0,bit.band(bit.rshift(unicode,12),0x0f)))
-- resultStr=resultStr..string.char(bit.bor(0x80,bit.band(bit.rshift(unicode,6),0x3f)))
-- resultStr=resultStr..string.char(bit.bor(0x80,bit.band(unicode,0x3f)))
-- end
-- end
-- resultStr=resultStr..'\0'
-- print(resultStr)
-- return resultStr
-- end
-- Utils.unicode_to_utf8 = unicode_to_utf8
-- local function utf8_to_unicode(convertStr)
-- if type(convertStr)~="string" then
-- return convertStr
-- end
-- local resultStr=""
-- local i=1
-- local num1=string.byte(convertStr,i)
-- while num1~=nil do
-- print(num1)
-- local tempVar1,tempVar2
-- if num1 >= 0x00 and num1 <= 0x7f then
-- tempVar1=num1
-- tempVar2=0
-- elseif bit.band(num1,0xe0)== 0xc0 then
-- local t1 = 0
-- local t2 = 0
-- t1 = bit.band(num1,bit.rshift(0xff,3))
-- i=i+1
-- num1=string.byte(convertStr,i)
-- t2 = bit.band(num1,bit.rshift(0xff,2))
-- tempVar1=bit.bor(t2,bit.lshift(bit.band(t1,bit.rshift(0xff,6)),6))
-- tempVar2=bit.rshift(t1,2)
-- elseif bit.band(num1,0xf0)== 0xe0 then
-- local t1 = 0
-- local t2 = 0
-- local t3 = 0
-- t1 = bit.band(num1,bit.rshift(0xff,3))
-- i=i+1
-- num1=string.byte(convertStr,i)
-- t2 = bit.band(num1,bit.rshift(0xff,2))
-- i=i+1
-- num1=string.byte(convertStr,i)
-- t3 = bit.band(num1,bit.rshift(0xff,2))
-- tempVar1=bit.bor(bit.lshift(bit.band(t2,bit.rshift(0xff,6)),6),t3)
-- tempVar2=bit.bor(bit.lshift(t1,4),bit.rshift(t2,2))
-- end
-- resultStr=resultStr..string.format("\\u%02x%02x",tempVar2,tempVar1)
-- print(resultStr)
-- i=i+1
-- num1=string.byte(convertStr,i)
-- end
-- print(resultStr)
-- return resultStr
-- end
-- Utils.utf8_to_unicode = utf8_to_unicode
无视编码都统一转成unicode 然后截断 例如 。“发发发发发发” 操作之后显示为 “发发发发...”的更多相关文章
- 不同格式的ip 统一转成ip列表
支持以下格式的ip地址: 192.168.1.0/24 192.168.1.1-23 192.168.1.123 代码如下: package finder; import java.net.InetA ...
- 编码GBK和GB2312、Unicode、UTF-8
一.编码GBK和GB2312 随着计算机发展,各国已经不满足于单纯用ASCII码: 对于我们来说能在计算机中显示中文字符是至关重要的,所以我们还需要一张关于中文和数字对应的关系表: 一个字节8位二进制 ...
- 控制台程序的中文输出乱码问题(export LC_CTYPE=zh_CN.GBK,或者修改/etc/sysconfig/i18n为zh_CN.GBK。使用setlocale(LC_CTYPE, "");会使用默认办法。编译器会将源码做转换成Unicode格式,或者指定gcc的输入文件的编码参数-finput-charset=GBK。Linux下应该用wprintf(L"%ls/n",wstr))
今天发现用securecrt登陆时,gcc编译出错时会出现乱码,但直接在主机的窗口界面下用Shell编译却没有乱码.查看了一下当时的错误描述,发现它的引号是中文引号,导致在SecureCRT中显示出错 ...
- 字符编码笔记:ASCII,Unicode和UTF-8
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...
- 字符编码笔记:ASCII,Unicode和UTF-8 转
本文出处 http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 只是为了记录一下省得要去搜. 今天中午,我突然想搞清楚 ...
- [转]字符编码笔记:ASCII,Unicode和UTF-8
转自:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 作者: 阮一峰 日期: 2007年10月28日 今天中午, ...
- 字符编码笔记:ASCII,Unicode和UTF-8(转载)
作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...
- UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理
一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...
- 字符编码笔记:ASCII,Unicode和UTF-8【转载】
作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...
随机推荐
- 计蒜客--移除数组中的重复元素 (set)
给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度. 例如:数组 A = \{1, 1, 2\}A={1,1,2},你的程序应该输出 22 即新数组的长度,新数组为 \{1, 2\}{1,2} ...
- linux系统Centos环境下搭建SVN服务器及权限配置
linux系统Centos环境下如何搭建SVN服务器以及svnserve.conf.authz.passwd配置文件详细介绍 至于svn的概念,这里就不做详细阐述了,可以自行百度.简单来讲就是一个 ...
- 大数据自学2-Hue集成环境中使用Sqoop组件从Sql Server导数据到Hive/HDFS
安装完CDH后,发现里面的东东实在是太多了,对于一个初学大数据的来说就犹如刘姥姥进了大观园,很新奇,这些东东每个单拿出来都够喝一壶的. 接来来就是一步一步地学习了,先大致学习了每个模组大致做什么用的, ...
- 金九银十跳槽季,程序员面试点解析之Java专场
前言 近年来Java工程师这个岗位炙手可热,市场需求大,学习Java的人也越来越多,所以IT企业与求职者的选择都比较多,那么IT企业在面试时都会提哪些问题呢.下面为大家分享 Java高级工程师面试阿里 ...
- window JNI_CreateJavaVM启动java程序
https://blog.csdn.net/earbao/article/details/51889605 #define _CRT_SECURE_NO_WARNINGS 1 #inclu ...
- ES6知识整理(9)--class的基本语法
(总结完知识点,出去滑板刷街) promise的catch 上一节promise中漏了一个知识点: promise对象可以使用catch来避免每个then中都加error判断,让错误时都进到catch ...
- EL和jstl(概念和使用方法)
概念: 1 . JSP 标签 是用来替换java代码的技术,容器遇到标签后会将其转换成java代码,jsp标签类似于开始标记.属性.结束标记.标签体. EL表达式是一套简单的运算规则,用于给jsp标 ...
- jQuery实现全选与全不选功能
初始时: 实现功能后: 实现该功能的核心代码: <script> $(function(){ $("#selectBtn").click(function(){ con ...
- 13: openpyxl 读写 xlsx文件
1.1 openpyxl 基本使用 1.openpyxl 将xlsx读成json格式 #! /usr/bin/env python # -*- coding: utf-8 -*- # -*- codi ...
- python --- 04 列表 元组
一 .列表 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 1.列表存在索引和切片. 和字符串是一样的. 2.增删改查操作 1).增加 1. .append(" ...