国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C# - C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決

C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決

2022-02-24 14:08熊仔其人 C#

這篇文章主要給大家介紹了關(guān)于C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近需要用到按字節(jié)數(shù)截取字符串。在網(wǎng)上找了很多方法。

Encoding.Default.GetString采用的Default

Encoding.UTF8.GetBytes采用的是utf-8編碼。這樣當然是亂碼。尤其出現(xiàn)中文時候。

對這類數(shù)據(jù)處理當然要用統(tǒng)一的編碼來處理。下面話不多說了,來一起看看詳細的介紹吧

例子:1

?
1
string msg= Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(strcode));

例子:2

?
1
2
3
string strcode="我是小明";
byte[] buffer=Encoding.UTF8.GetBytes(strcode);
string msg= Encoding.UTF8.GetString(buffer,0,buffer.Length);

實際結(jié)果是截取的結(jié)尾會出現(xiàn)亂碼。原因是最后的字符是多個字節(jié),被不完整的截取了。

改進后的辦法如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/// <summary>
 /// 按字節(jié)數(shù)截取字符串的方法(比SubString好用)
 /// </summary>
 /// <param name="source">要截取的字符串(可空)</param>
 /// <param name="NumberOfBytes">要截取的字節(jié)數(shù)</param>
 /// <param name="encoding">System.Text.Encoding</param>
 /// <param name="suffix">結(jié)果字符串的后綴(超出部分顯示為該后綴)</param>
 /// <returns></returns>
 public static string SubStringByBytes(string source, int NumberOfBytes, System.Text.Encoding encoding, string suffix = "...")
 {
  if(string.IsNullOrWhiteSpace(source) || source.Length == 0)
  return source;
 
  if(encoding.GetBytes(source).Length <= NumberOfBytes)
  return source;
 
  long tempLen = 0;
  StringBuilder sb = new StringBuilder();
  foreach(var c in source)
  {
  Char[] _charArr = new Char[] { c };
  byte[] _charBytes = encoding.GetBytes(_charArr);
  if((tempLen + _charBytes.Length) > NumberOfBytes)
  {
   if(!string.IsNullOrWhiteSpace(suffix))
   sb.Append(suffix);
   break;
  }
  else
  {
   tempLen += _charBytes.Length;
   sb.Append(encoding.GetString(_charBytes));
  }
  }
  return sb.ToString();
 }
 /// <summary>
 /// 按字節(jié)數(shù)截取字符串的方法(比SubString好用)
 /// </summary>
 /// <param name="source">要截取的字符串(可空)</param>
 /// <param name="NumberOfBytes">要截取的字節(jié)數(shù)</param>
 /// <param name="encoding">UTF-8,Unicode,GB2312...</param>
 /// <param name="suffix">結(jié)果字符串的后綴(超出部分顯示為該后綴)</param>
 /// <returns></returns>
 public static string SubStringByBytes(string source, int NumberOfBytes, string encoding = "UTF-8", string suffix = "...")
 {
  return SubStringByBytes(source, NumberOfBytes, Encoding.GetEncoding(encoding), suffix);
 }

原理很簡單,就是截取之前逐個先判斷字符是否超出字節(jié)長度,如果超出則扔掉整個字符。

在JavaScript里面的Blob對象很容易獲取字節(jié)長度: var len= new Blob(['字符串']).size;

JS代碼是不是比較簡潔?

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

原文鏈接:https://www.cnblogs.com/xiongzaiqiren/p/9020731.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久91久久久久麻豆精品 | 国产a级毛片 | 亚洲免费不卡视频 | 人人插人 | 免费一级毛片观看 | 人人爽人人爽人人片av | 亚洲一区在线日韩在线深爱 | 草久久久 | 青青草在线视频免费观看 | 九九综合九九 | 欧美怡红院视频一区二区三区 | 午夜免费剧场 | 在线免费观看黄色 | 羞羞动漫在线观看 | 国产不卡免费视频 | 欧美性一区二区三区 | 毛片a级毛片免费 | av在线黄 | 国产美女精品一区二区三区 | 激情毛片 | 精品一区二区在线观看 | 日韩在线观看中文字幕 | 久久久精品视频网站 | 成人av一区二区亚洲精 | 精品黑人一区二区三区久久 | 日韩精品一区二区三区视频播放 | 亚洲欧美激情精品一区二区 | 国产午夜精品一区二区三区视频 | 日韩成人免费 | 亚洲精品在线观看av | 亚洲精品一区二区三区蜜桃久 | 久久久久久久一区 | 日韩在线不卡 | 亚洲一区中文字幕 | 国产高清精品一区 | 精品伦精品一区二区三区视频 | 国产日产久久高清欧美一区 | 黄视频网站免费观看 | 高清视频一区 | 在线精品国产 | 一区二区福利 |