/// <summary>
/// 按不同的字节编码,通过字节数去截取字符串
/// 数据库UTF-8 1个数字、字母、英文符号算1个长度 1个中文、中文符号算3个长度
/// </summary>
/// <param name="origStr">需截取的字符串</param>
/// <param name="bytesLength">需截取的字节长度</param>
/// <param name="dstEncoding">截取的字节编码类型</param>
/// <returns></returns>
public static string GetSubString(string origStr, int bytesLength, Encoding dstEncoding)
{
if (origStr == null || origStr.Length == || bytesLength < )
return "";
int bytesCount = dstEncoding.GetByteCount(origStr);
if (bytesCount > bytesLength)
{
int readyLength = ;
int byteLength;
for (int i = ; i < origStr.Length; i++)
{
byteLength = dstEncoding.GetByteCount(new char[] { origStr[i] });
readyLength += byteLength;
if (readyLength == bytesLength)
{
origStr = origStr.Substring(, i + );// + "..."; 加省略号
break;
}
else if (readyLength > bytesLength)
{
origStr = origStr.Substring(, i);// + "..."; 加省略号
break;
}
}
}
return origStr;
}
sting newStr = GetSubString(origStr, bytesLength, Encoding.UTF8);

C# 按不同的字节编码,通过字节数去截取字符串的更多相关文章

  1. 单字节编码&双字节编码

    单字节编码(WINDOWS-1252.ISO-8859-1.UTF-8) 双字节编码(UTF-16) Windows 记事本默认会将文件保存为单字节的 ANSI(ASCII).如果您选择 " ...

  2. encode_utf8 把字符编码成字节 微信例子

    ##µ¼Èë encode_json decode_json use JSON qw/encode_json decode_json/; print "1111111111111111-\$ ...

  3. encode_utf8 把字符编码成字节 decode_utf8解码UTF-8到字符

    encode_utf8 $octets = encode_utf8($string); Equivalent to "$octets = encode("utf8", $ ...

  4. java 字节编码学习

    位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头.UTF-8最多可用到6个字节. 如表: 1字节 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 11 ...

  5. linux od-输出文件的八进制、十六进制等格式编码的字节

    博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 od命令用于输出文件的八进制.十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符. 常见的文件为文 ...

  6. 前端中常见字节编码(base64、hex、utf8)及其转换

    /* * 字节编码转换 * 首先都需要转为二级制数组 (ArrayBuffer) * 然后才能转换对应的编码字符 * 前端常见编码: * base64:就是将二进制转为字符串,将每6个字节转为一个特定 ...

  7. (转)宽字节编码类型的XSS

    今晚又看了一遍PKAV-心上的瘦子写的xss腾讯系列的例子,收获挺大的,其中对宽字节注入有了更深的了解,又查找了一些相关的资料,整理一下,以备以后查阅 参考文档: http://book.2cto.c ...

  8. Java按字节截取字符串(GBK编码、UTF-8编码实现)

    package FileDemo; import java.io.IOException; public class CutStringTest { /** * @param args * @thro ...

  9. java基础知识回顾之---java String final类普通方法的应用之“按照字节截取字符串”

    /*需求:在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符.但对应的字节数不同,一个汉字占两个字节.定义一个方法,按照最大的字节数来取子串.如:对于“ab你好”,如果取三 ...

随机推荐

  1. js判断是否在微信中打开

    var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger&quo ...

  2. Expression Trees 参数简化查询

    ASP.NET MVC 引入了 ModelBinder 技术,让我们可以在 Action 中以强类型参数的形式接收 Request 中的数据,极大的方便了我们的编程,提高了生产力.在查询 Action ...

  3. Mac 常用的快捷键

    Mac 菜单和键盘通常对某些按键使用符号,其中包括以下修饰键: Command(或 Cmd)⌘ Shift ⇧ Option(或 Alt)⌥ Control(或 Ctrl)⌃ Caps Lock ⇪ ...

  4. fflush()函数:更新缓冲区

    fflush()的作用是用来刷新缓冲区: fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃:stdin是standard input的缩写,即标准输入,一般是指键盘:标准输入缓冲 ...

  5. 使php支持pdo_mysql

    1.下载pdo_mysql包 wget https://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 2.追加编译php,使其module目录下生产pdo_mysql.so ...

  6. DWM1000 巧用Status 快速Debug

    在Debug DWM1000 的时候,可以巧用Status 加快Debug,例如如下代码 if (status_reg & SYS_STATUS_RXFCG) { …… } else { sp ...

  7. github第一次引用开源的库

    想要使用这个一个东西 第一步就是在中添加上面那句话. 这个应该是俩种使用方法,一种用于java中一个用作控件引用 此时就能使用我们引用的这个库了.

  8. JS基础学习2

    1.CMAScript 运算符 算数运算符 递增(++).递减(--) var i=15; console.log(i++); console.log(i); var i1=15; console.l ...

  9. mapState ,mapGetters ,mapMutations,mapActions

    参考 http://www.imooc.com/article/14741

  10. Java程序生成一个Access文件

    package access; import java.io.File;import java.io.IOException;import java.sql.SQLException;import j ...