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

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://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剧情日韩精品| 日本一区二区三区高清在线| 国内在线免费观看av| 精品少妇熟女av免费久久| 国产毛片精品一区内射| 日本一区二区三区中文字幕不卡| 一二区中文字幕在线观看| 天堂av影片在线观看| 色综合av男人的天堂| 亚洲综合色婷婷在线影院| 91欧美精品一区二区| 国内激情自拍偷拍视频| 亚洲字幕中文在线乱码mv | 天天操夜夜操夜夜操| 亚洲中文字幕一区二区人妻| 亚洲精品中文字幕久久| 日韩欧美国产精品一区二区三区| 日本午夜理论视频在线播放| 日韩中文字幕 在线播放| 日本精品人妻一区二区三区蜜桃 | 国产激情在线四五区观看| 国产美女直播亚洲一区色| 久久亚洲精品中文字幕一| 青青草针对华人在线视频| 日本加勒比系列在线视频| 日本精品av一区二区| 亚洲av网站女性向在线观看| 亚洲日本精品免费在线观看| 992免费影院 在线观看| 国产三级久久精品三级91| 九九视频在线观看免费观看| 九九热在线视频观看最新|