/// <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. 利用ApplicationContextAware装配Bean

    @Component public class SpringUtil implements ApplicationContextAware { private static ApplicationCo ...

  2. Angular组件——投影

    运行时动态改变组件模版的内容.没路由那么复杂,只是一段html,没有业务逻辑. ngContent指令将父组件模版上的任意片段投影到子组件上. 一.简单例子 1.子组件中使用<ng-conten ...

  3. .net core2.x 自动注入 Entity(实体对象到上下文)

    概要:有点老套,因为早在 .net frmework的时候(core还没出来),我们在使用 ef(4....6)的时候就已经这么用,这里我在搭建框架,所以随手写下,让后来人直接拿去用用. 1.使用前提 ...

  4. 第四次java实验

    java实验 实验一: 要求 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第 ...

  5. Sicily T-primes

    DescriptionWe know that prime numbers are positive integers that have exactly two distinct positive  ...

  6. 学习 Vim —— Vimtutor 总结笔记

    Lesson 2 2.1-2.3 删除 [dw] 删除从光标开始处至下一词开始前的部分,光标停在下一词的词首. [de] 删除从光标开始处至词尾的部分. [d$] 删除从光标开始处至行末的部分. 2. ...

  7. C++ log4cplus 类库的封装

    对 log4cplus 库的封装,修改自网路 LogUtils.h /* * LogUtils.h * * Created on: 2018年8月9日 * Author: oftenlin */ #i ...

  8. JS-排序详解-冒泡排序

    说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在b的前面,排序后可能会交换 ...

  9. RAID 0 ~ RAID 7

    一.RAID解析1.RAID 0(1)将几块磁盘并行组合,横向写数据(2)并发IO,写数据最快缺点:不提供数据冗余,如果其中一块磁盘废掉,则数据全毁详细:条带深度大时,一次IO只能从一块磁盘上读取,无 ...

  10. Ubuntu安装VLC播放器

    Ubuntu安装VLC官方介绍:http://www.videolan.org/vlc/download-ubuntu.html sudo apt-get update sudo apt-get in ...