//调用方法,传入字符串和需要返回的字节长度即可function cutstr(str,len){ var str_length = 0; var str_len = 0; str_cut = new String(); str_len = str.length; for(var i = 0;i<str_len;i++){ a = str.charAt(i); str_length++; if(escape(a).length > 4){ //中文字符的长度经编码之后大于4 str_lengt…
java String长度与varchar长度匹配理解(字符和字节长度理解) string中的length()长度,返回的是char的数量,每个char可以存储世界上任何类型的文字和字符,一个char 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中…
//检查输入字符串字节长度 function fucCheckLength(strTemp) { var i,sum; sum=0; var length = strTemp.length ; for(i=0;i<length;i++) { if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255)) { sum=sum+1; }else { sum=sum+2; } } return sum; } 使用:…
function strlen(str) {        var len = 0;        for (var i = 0; i < str.length; i++) {            var c = str.charCodeAt(i);            //单字节加1             if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f))…
正则匹配中文字: 这里限定中文字的范围,一般的使用是没什么问题的.如果要求十分严格的话,那么就只能使用更加严谨的代码匹配了 1:/([^\u0000-\u00FF])/g 2:/[^\x00-\xff]/ig 下面是网上查到的两种写法: http://www.uw3c.com/jsviews/js62.html 方法一function getBt(str){ var char = str.match(/[^\x00-\xff]/ig); return str.length + (char ==…
1.正则regExpForm.onblur=function(){ entryVal=this.value; entryLen=entryVal.length; cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法检索出中文字符并返回一个存放中文的数组 entryLen =cnChar.length;//算出实际的字符长度 } \xhh,匹配的是一个十六进制字符hh.(注:h取值范围是0-9a-f) ^\x00-\x80(注意有个非) 是全角字符的…
平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错. 尤其是插入中英文混合字符串时,SQL Server中一般中文要占两个字节,所以对混合型的字符串就要作一个处理,统一按字节长度来计算字符串长度,方法如下: C#方法一: public static string GetString(string str, int len) { string result = string.Empty;// 最终返回的结果 int…
摘要: js的string.length 属性取的是字符串的实际长度 php的str_len()函数取的是字符串的字节长度,中文utf-8占3个字节,gb2312占2个字节 mysql中的varchar类型长度,指字符长度 JS计算字符长度length.字节数 一个汉字在UTF-8编码中占用几个字节? 占用3个字节的范围 U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个 U+2F00 - U+2FD5 : 0xE2 0xBC 0x…
我们知道Node.js框架下的Buffer对象能够对二进制数据提供很好的支持,那么获取一个Buffer对象真实的字节长度则是必须要用到的功能了.Node.js框架为开发人员提供了一个Buffer.byteLength()方法,下面我们借助一个官方文档提供的例程向读者演示一下该方法的使用过程. 本例ch04.buffer-byteLength.js主要代码如下: 01 /** 02 * ch04.buffer-byteLength.js 03 */ 04 console.info("------B…
因:javascript中的String类自带的length属性 和 substr()方法虽然能判断和截取出字符个数,但是对字节个数却没有处理的方法(众所周知,中文字符占两个字节,英文只占一个) 果:中英文字符在页面上的占位空间存在差异.中文的web开发人员不能一刀切,对中英文都截取同样长度的字符数. 网上大致有两种方法处理中英文字符.一种是把中文字符escape了,然后计算字节长度.一种是用正则表达式把中文字符转换2个字节的符号,然后计算长度 推荐第二种方法,简单明了,速度快,效率高. 按照第…
来源:js获取字符长度并计算px宽度 - [云]风过无痕 - 博客园 (cnblogs.com) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="…
默认的截取字符串都是根据字符长度或位置截取的,典型的两个方法是substr和substring. 这样导致的问题是截取同样长度的字符串时,多字节字符(汉字等)和单字节字符(半角英文字母.半角数字)占的位置长度差距较大,视觉上不太美观,比如同样是10个字符: 壹贰叁肆伍陆柒捌玖拾 abcdefghih 好了,上代码了,下面是自己写的根据指定字节长度截取字符串的函数: /* * param str 要截取的字符串 * param L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节 * ret…
原理,就是把一个汉字替换为两个字母,来实现长度验证. //js正则验证字符长度 第一种:直接输出长度 alert('1sS#符'.replace(/[^\x00-\xff]/g, 'AA').length); 第二种:先转换一个汉字为两个字母,再进行登录名正则规则的验证(此段正则含义:不能以数字开头,不能包含_#?等特殊字符,至少6-25位长度) function checkLoginName(str) { return /^(?!\d)[\u4e00-\u9fa5a-zA-Z0-9_-]{6,…
如下代码段是关于C#返回字符串的字节长度,一个中文算两个字符的代码. public static int GetLength(string str) { if (str.Length == 0) return 0; ASCIIEncoding ascii = new ASCIIEncoding(); int tempLen = 0; byte[] s = ascii.GetBytes(str); for (int i = 0; i < s.Length; i++) { if ((int)s[i]…
js混合计算字符串字节长度 function getBt(str) { ) { var char = str.match(/[^\x00-\xff]/ig); : char.length); } else { ; } } 用法:直接调用getBt('计算我的字节长度');…
delphi2010是delphi所有版本的分水岭,其中2010—xe10.2之间版本上的代码都有比较好的兼容性,基本上都能直接进行编译,不需要过多修改,但d7距d2010跨度4个版本以上,新版本除了增加新功能函数外,对原有的vcl控件也进行了优化和增强,并且支持64位.跨平台开发.多语言.直接支持跟随系统风格样式,所以升级相对有些麻烦,但却有价值. RZ.FR.EHLIB 等常用控件都有跟随delphi推出了版本,d7的绝大部分代码也可以直接在d2010以上版本中进行编译,最需要处理的问题主要…
//超过长度的字符截取指定长度,超出部分以...显示 function subString(str, len) { var newLength = 0; var newStr = ""; var chineseRegex = /[^\x00-\xff]/g; var singleChar = ""; var strLength = str.replace(chineseRegex, "**").length; if (strLength >…
在显示字符串的时候,避免字符串过长往往会对字符串进行截取操作,通常会用到js的 substr 或者 substring方法, 以及 字符串的length属性 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符. substring() 方法用于提取字符串中介于两个指定下标之间的字符. 对于非中文的字符串处理是很简单的,但是中文字符的 length  属性值 是1  而不是 2 ,所以处理就不是很友好了.    例如  你有一个字符串   'abcdefg' 和   '…
这是个好问题,可以当作一个笔试题.先从字符编码讲起. 1.美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0: 2.后来欧洲人发现尼玛你这128位哪够用,比如我高贵的法国人字母上面的还有注音符,这个怎么区分,得,把高1位编进来吧,这样欧洲普遍使用一个全字节进行编码,最多可表示256位.欧美人就是喜欢直来直去,字符少,编码用得位数少: 3.但是即使位数少,不同国家地区用不同的字符编码,虽然0--127表示的符号是一样的,但是128…
一.字符编码 重点 ***** 1. 什么是字符编码:将人识别的字符转换计算机能识别的01,转换的规则就是字符编码表2. 常用的编码表:ascii.unicode.GBK.Shift_JIS.Euc-kr3. 编码操作:编码encode().解码decode()4. 了解:编码表的发展史 A.ascii(ASCII)表:字母.数字.英文符号与计算机01标识符的对应关系思考:如何将128个字符用01完全标签二进制:1111111=====>>>255====>>1bytes(1…
原地址:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part2.aspx ASCII.UTF8.Uncicode编码下的中英文字符大小 ASCII不能保存中文 UTF8是变长编码.在对ASCII字符编码时,UTF更省空间,只占1个字节,与ASCII编码方式和长度相同:Unicode在对ASCII字符编码时,占用2个字节,且第2个字节补零. UTF8在对中文编码时需要占用3个字节:Unicode对中文编码则只需要2…
因为看到百度里面这个人回答比较生动,印象比较深刻,所以转过来做个笔记 原文链接 https://zhidao.baidu.com/question/1047887004693001899.html 知乎也有更清晰解答 https://www.zhihu.com/question/23374078 1.美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0: 2.后来欧洲人发现尼玛你这128位哪够用,比如我高贵的法国人字母上面的还有注…
字符串是由一个个字符组成的,每个字符又有一个或多个字节来表示,每个字节又由8个bit位来表示 在C#里 字符串通常由string来声明,字符由char来声明,字节由byte来表示,位由bit来表示,具体分析见下面的测试代码分析: 完整测试代码: using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using Syst…
问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校验,如果数据是纯英文,没有问题,但是如果数据中包含中文,校验可以通过,但是在数据入库时经常会报数据超长. 问题分析: 既然问题是数据超长,那么问题应该就是出在数据长度校验上,也就是出在String.length()这个方法上,来看看JDK是如何描述这个方法的: length public int length()返回此字符串的长度.长度等于字…
如果项目本身是使用 Unicode 字符集和utf8编码,std::string的length(),size()甚至是c的strLen取到的都是字节长度了,比如三个汉字,就是9, 以上情况不满足的话,就是用c++的宽字符std::wstring: std::string teststr = "dfd123"; std::wstring wStr(teststr.begin(),teststr.end()); wStr.length(); std::wstring的length()取出的…
准备校招笔试的时候经常遇到C++某个数据类型占据多少个字节的问题,查阅了下资料,总结如下: 首先罗列一下C++中的数据类型都有哪些: 1.整形:int.long 2.字符型:char.wchar_t 3.布尔型:bool 4.浮点型:float.double 5.指针 一.整形 int占据操作系统一个内存单元的大小.long跟int相同 早先16位操作系统一个内存单元是16位,所以是2个字节:32位系统一个内存单元是是32位,所以是4字节:64位操作系统一个内存单元是16位,故占8个字节. 二.…
识别Json字符串并分隔成Map集合 前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些小问题: 1:C#的ref:这个参数的主要意图是: 就算方法内部重新对参数重新(new)赋值,也能保证外部的参数指向新的值. Java木有了,不知道新的方案是什么?还是说只能避免方法内部重新(new)赋值? 2:C#的out:这个参数的主要意图是: 处理多值返回…
产生这个问题的原因是将Substring方法将双字节的汉字当成一个字节的字符(UCS2字符)处理了,导致长度变短. 两个扩展方法按字节长度截取字符串 /// <summary> /// 根据字节长度来截取字符串 /// </summary> ///<param name="origStr">原始字符串</param> ///<param name="length">提取前length个字节</para…
一.字符编码: 定义:将人识别的字符转换成计算机能识别的0和1,转换的规则就是字符编码表. 常见编码表:ascii.unicode.GBK 编码表: 1.采用的都是unicode编码表 2.unicode以定长(2字节)存取数据 编码操作: 编码encode() 解码decode() 字符与字节 1.字节的存储方式:8个二进制 2.字符所占字节数:根据编码的不同,所占字节数可能不同 3.三种格式字符串:u' ',b' ',r' ' 文件操作: 1.文件操作的三个步骤:打开文件-使用文件-关闭文件…
DUMP(w[,x[,y[,z]]]) [功能]返回数据类型.字节长度和在内部的存储位置. [参数] w为各种类型的字符串(如字符型.数值型.日期型--) x为返回位置用什么方式表达,可为:8,10,16或17,分别表示:8/10/16进制和字符型,默认为10. y和z决定了内部参数位置 [返回]类型 <[长度]>,符号/指数位 [数字1,数字2,数字3,......,数字20] 如:Typ=2 Len=7: 60,89,67,45,23,11,102 SELECT DUMP('ABC',10…