- 論壇徽章:
- 307
|
本帖最后由 sunzhiguolu 于 2015-10-23 09:22 編輯
回復 8# zhlong8
大神您好, 在 Linux 環(huán)境下如何確保中文字符按照 兩 個字節(jié)進行處理.
測試環(huán)境:linux
測試文本:
1.> 編碼方式: utf-8
2.> 使用桌面環(huán)境, 右鍵創(chuàng)建空文檔的方式創(chuàng)建的測試文件 input.txt
本地語言環(huán)境:- LANG=zh_CN.UTF-8
- LC_CTYPE="zh_CN.UTF-8"
- LC_NUMERIC="zh_CN.UTF-8"
- LC_TIME="zh_CN.UTF-8"
- LC_COLLATE="zh_CN.UTF-8"
- LC_MONETARY="zh_CN.UTF-8"
- LC_MESSAGES="zh_CN.UTF-8"
- LC_PAPER="zh_CN.UTF-8"
- LC_NAME="zh_CN.UTF-8"
- LC_ADDRESS="zh_CN.UTF-8"
- LC_TELEPHONE="zh_CN.UTF-8"
- LC_MEASUREMENT="zh_CN.UTF-8"
- LC_IDENTIFICATION="zh_CN.UTF-8"
- LC_ALL=
復制代碼 測試代碼如下: (只抓取前 10 個字符)
- #!/usr/bin/perl -w
- use strict;
- use bytes;
- while (<>){
- if (m{(.{10})}){
- my $leng = length ($1);
- printf "Length = %d, |%s|\n", $leng, $1;
- my @a_10c = split //, $1;
- foreach (@a_10c){
- printf "<%s>=%d ", $_, length ($_);
- }
- print "\n";
- }
- }
復制代碼 輸出結果如下:
- Length = 10, |1F 123456 |
- <1>=1 <F>=1 < >=1 <1>=1 <2>=1 <3>=1 <4>=1 <5>=1 <6>=1 < >=1
- Length = 10, |2G 7測012|
- <2>=1 <G>=1 < >=1 <7>=1 <?>=1 <?>=1 <?>=1 <0>=1 <1>=1 <2>=1
- Length = 10, |3V 1試456|
- <3>=1 <V>=1 < >=1 <1>=1 <?>=1 <?>=1 <?>=1 <4>=1 <5>=1 <6>=1
- Length = 10, |4H 234567 |
- <4>=1 <H>=1 < >=1 <2>=1 <3>=1 <4>=1 <5>=1 <6>=1 <7>=1 < >=1
復制代碼 輸出結果中連續(xù)的 3 個 ? (問號字符) 表示一個漢字字符, 每個漢字部分占用 3 個字節(jié)長度.
|
|