欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

這篇文章主要介紹C#如何解決中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、鑲黃網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鑲黃等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

前言

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

Encoding.Default.GetString采用的Default

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

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

例子:1

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

例子:2

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

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

改進(jìn)后的辦法如下:

/// <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;

以上是“C#如何解決中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享標(biāo)題:C#如何解決中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題
標(biāo)題路徑:http://www.aaarwkj.com/article4/igegie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站收錄、微信小程序、動態(tài)網(wǎng)站App設(shè)計(jì)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
日本视频一曲二曲三曲四曲| 欧美日本国产老熟女视频| 久久精品一区二区三区不卡| 久久精品国产亚洲av麻| 亚洲精品一区二区牛仔裤| 丁香六月色婷婷亚洲激情| 四虎精品在线免费视频| 欧美精品亚洲精品日韩| 亚洲精品区免费观看av| 东京热男人的av天堂| 日本精品不卡一二三区| 国产b片免费在线观看| 日韩欧美二区三区在线| 色婷婷精品综合久久狠狠| 亚洲精品黄色在线观看| 国产欧洲日本一区二区| 99热久久精品免费精品| 日韩av在线观看大全| 91美女人妻精品久久| 青青草原一区在线观看| 日韩成人免费观看视频| 在线免费观看91亚洲| 人妻少妇久久中文字幕韩| 在线国产精品中文字幕| 国产日韩欧美 一区二区三区| 亚洲精品一区二区三区色| 日本国产一区二区在线观看| 97人妻精品一区二区三区六| 日本视频三区在线播放| 伊人久久亚洲福利精品| 极品大胸美女被啪啪的高潮| 亚洲av色香蕉一区二区| 国产丝袜美腿诱惑久久| 国内极品尤物视频在线| 欧美日韩国产另类久久| 国产成人99亚洲综合精品| 国产精品大片一区二区三区四区| 天堂av在线网址观看| 国产女主播福利在线播放| 欧美国产综合欧美一区二区三区| 亚洲国产日韩欧美一级|