中文字串處理
1. 擷取GB2312中文字串
<?php < ?php //擷取中文字串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; } ?>
2. 擷取utf8編碼的多位元組字串
<?php
< ?php
//擷取utf8字串
function utf8Substr($str, $from, $len)
{
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
?>
3. UTF-8、GB2312都支援的漢字擷取函式
<?php < ?php /* Utf-8、gb2312都支援的漢字擷取函式 cut_str(字串, 擷取長度, 開始長度, 編碼); 編碼預設為 utf-8 開始長度預設為 0 */ function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') { if($code == 'UTF-8') { $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; preg_match_all($pa, $string, $t_string); if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; return join('', array_slice($t_string[0], $start, $sublen)); } else { $start = $start*2; $sublen = $sublen*2; $strlen = strlen($string); $tmpstr = ''; for($i=0; $i< $strlen; $i++) { if($i>=$start && $i< ($start+$sublen)) { if(ord(substr($string, $i, 1))>129) { $tmpstr.= substr($string, $i, 2); } else { $tmpstr.= substr($string, $i, 1); } } if(ord(substr($string, $i, 1))>129) $i++; } if(strlen($tmpstr)< $strlen ) $tmpstr.= "..."; return $tmpstr; } } $str = "abcd需要擷取的字串"; echo cut_str($str, 8, 0, 'gb2312'); ?>
4. BugFree 的字元擷取函式
< ?php
/**
* @package BugFree
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* Return part of a string(Enhance the function substr())
*
* @author Chunsheng Wang <[email protected]>
* @param string $String the string to cut.
* @param int $Length the length of returned string.
* @param booble $Append whether append "...": false|true
* @return string the cutted string.
*/
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) < = $Length )
{
return $String;
}
else
{
$I = 0;
while ($I < $Length)
{
$StringTMP = substr($String,$I,1);
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast[] = $StringTMP;
}
$StringLast = implode("",$StringLast);
if($Append)
{
$StringLast .= "...";
}
return $StringLast;
}
}
$String = "17test.info 走在中國自動化測試的前沿";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>
相關推薦
中文字串處理
1. 擷取GB2312中文字串 <?php < ?php //擷取中文字串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; f
處理中文字串的函式
處理中文字串的函式 <%!public String codeToString(String str) {//處理中文字串的函式 String s = str; try { byte tempB[] = s.getBytes("ISO-8859-1"); s = new
在處理中文字串的時候,如何處理�這個字元
首先需要明白�這個字元是什麼意思,是怎麼產生的 解釋:從某編碼向Unicode編碼轉化時,如果沒有對應的字元,得到的將是Unicode的程式碼“\uffffd”,也就是�這個字元。 比如:伺服器端用GB2312對響應的資料進行編碼,而接收端使用預設UTF-8編碼接收是對應不上的,就會出現
PHP中文處理 中文字串擷取(mb_substr)和獲取中文字串字數
一、中文擷取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截斷的字串 $start,截斷開始處,起始處為0 $length,要擷取的字數 $encodin
遇到問題---redis命令列檢視中文亂碼--十六進位制字串處理
症狀 Redis在使用命令列操作時,如果檢視內容或者key中包含中文,會顯示16進位制的字串”\xe4\xb8\xad\xe5\x9b\xbd” 127.0.0.1:6379> set k1 '中國' OK 127.0.0.1:6379> get
lua 含中文的字串處理--分離字元、計算字元數、擷取指定長度
lua中對中文字串的一些處理 分離字元 將每個字元分離出來,放到table中,一個單元內一個字元 function StringToTable(s) local tb = {} --[[ UTF8的編碼規則: 1. 字元的第一個
Linux 處理中文字串 :/區分中文和英文的方法
#include <stdio.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <wchar.h>
python關於windows建立含有中文字串的資料夾及檔案時亂碼的問題處理
資料夾和檔案的名字裡面含有中文字串時出現亂碼的處理: 把該字串編碼轉換為unicode或gbk編碼的字串來解決。程式碼第二行如有宣告編碼格式如utf-8,則程式碼裡面出現中文字串的地方就按照utf-8格式的字串去處理;如沒有編碼宣告,則windows系統預設為
iOS判斷字串中是否有中文及處理方式
//判斷是否有中文 -(BOOL)hasChinese:(NSString *)str { for(int i=0; i< [str length];i++){ int
Spring MVC 返回型別為字串時, 返回中文變成"?"處理
這裡使用ResponseBody, 返回值直接是一個字串, 沒有用到jackson, 如果是返回一個Object, 使用jackson轉json, 是沒有編碼問題的 這時酒店查詢幾個字全都變成了問號 由於Spring處理返回值為String型別的結果時使
C++ 對中文字串的處理
1、wstring輸出漢字需要設定一下 wstring wstr2=Ansi_To_Unicode(str2); wcout.imbue(locale("chs")); wcout<<wstr2<<endl; 2、如何搜尋字串中的漢字 //返
C#對URL中的中文亂碼處理
res quest 類庫 處理 odin .dll 前言 中文亂碼 ring 前言:UTF-8中,一個漢字對應三個字節,GB2312中一個漢字占用兩個字節。 不論何種編碼,字母數字都不編碼,特殊符號編碼後占用一個字節。 1、直接在C#後臺編碼URL參數 引用類庫:Syste
Datastage JDBC Connector 中文亂碼處理
default 中文亂碼 在Datastage中,通常處理中文字符編碼的時候是通過設置工程、JOB、stage三個級別的NLS但JDBC Connector stage這個組件並沒有NLS選項,而是通過 stage裏面的“Properties”選項卡裏面的“Session”-->“Charact
Java中文亂碼處理
art data- data XML direct 中文亂碼處理 new size tracking 一、處理get方法中文亂碼 方法1 String name = new String(request.getParameter("userName&
YAML 對中文的處理
odin enc import int 中文 Coding pen all true from yaml import load,dump f = open(‘xx.ymal‘,encoding=‘utf-8‘) l = load(f) print(f) w
關於機器學習中文本處理的一些常用方法
機器學習 tfidf lda word2vec前言 文本挖掘也是機器學習或者說是人工智能最需要處理的一類信息(其它的諸如語音、圖像及視頻處理等);隨著數字信息化和網絡化進程不斷深入,用戶的在線交流、發布、共享等都被以文字形式記錄下來,它們成為分析語言和理解社會的重要素材來源,對於文本的挖掘主要包括文檔分類、
MySQL中文亂碼處理_字符集轉換處理
MySQL 中文亂碼 字符集轉換-- 中文亂碼修復 -- 查看MySQL服務參數設置mysql> show variables like ‘%character%‘;+--------------------------+----------------------------------+| Vari
Python爬蟲中文小說網點查找小說並且保存到txt(含中文亂碼處理方法)
nbsp nor png erro 請求方式 輸出結果 下載 ros mozilla 從某些網站看小說的時候經常出現垃圾廣告,一氣之下寫個爬蟲,把小說鏈接抓取下來保存到txt,用requests_html全部搞定,代碼簡單,容易上手. 中間遇到最大的問題就是編碼問題,第一抓
spring mvc 中文亂碼處理
param pat encoding mvc ren 處理 web.xml framework 亂碼處理 在 web.xml中添加 <filter> <filter-name>characterEncodingFilter</filt
日誌中文亂碼處理,請求亂碼,響應亂碼,保存數據到數據庫亂碼
conf 服務器 過濾器 close 發布服務 setting open odi idea 1.日誌亂碼處理 中文亂碼需要修改四個部分:1.idea安裝目錄下的bin/idea64.exe.vmoptions和bin/idea.exe.vmoptions追加-Dfile.e