求《读心神探百度云盘资源》百度云资源,谢谢!

[转]java 类里判断字符串是iso-8859-1还是gb2312,utf-8,gbk等,判断编码类型
- ITeye技术网站
博客分类:
System.out.println(java.nio.charset.Charset.forName("GB2312").newEncoder().canEncode("张三"));
System.out.println(java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode("张三"));
第一个输出true
第二个输出false
浏览: 188517 次
来自: 西安
这篇《serialversionuId作用》解释的更清楚,更有 ...
public static void middleRevers ...
平xiong,我已经搞定,因为XXXX原因代码我回去后重新贴到 ...帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:10&分页:土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Fri Oct 12 00:01:58 2012), 站内 && 应该有个什么区间是给汉字用的吧?用啥函数查呢? &&&&&&&&&&&&&& -- && ※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Fri Oct 12 21:19:23 2012), 站内 && 试验了几个都不行。。
【 在 pengtu (土人·天问) 的大作中提到: 】
: 哪个函数呢。。。
Index of all identifiers in unit 'LCLProc' && U
UnicodeToUTF16
UnicodeToUTF8
UnicodeToUTF8SkipErrors
UTF16CharacterLength
UTF16CharacterToUnicode
UTF16Length
UTF16String
UTF16ToUTF8 && UTF8CharacterLength
UTF8CharacterStrictLength
UTF8CharacterToUnicode
UTF8CharStart
UTF8CharToByteIndex
UTF8CompareStr
UTF8CompareText
UTF8CStringToUTF8String
UTF8Delete
UTF8FindNearestCharStart
UTF8FixBroken && UTF8Insert
UTF8Length
UTF8LowerCase
UTF8ToDoubleByte
UTF8ToDoubleByteString
UTF8ToUTF16
UTF8UpperCase && -- && ※ 修改:·pengtu 于 Oct 12 21:21:45 2012 修改本文·[FROM: 58.23.13.*]
※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Fri Oct 12 21:46:31 2012), 站内 && 终于有动静了,但不是期望的结果。还有,add后面怎么把edit1.text的内容动态加进去呢?符号#后面不是string,这个#是什么意思? && lazarus中测试: && memo1.Lines.Add(#$4E00#$4E01#$4E02#$4E03);&&//不能有空格! && memo1.Lines.Add(#$9FBC#$9FBD#$9FBE#$9FBF);&&&& 结果粘贴:
һ?@??
???? && 第一行看上去是字母h,后面是?@??。水木这里是GBK,不知道粘贴上来有什么变化。
第二行看上去是4个问号。????
这个结果应该不是unicode($4E00)的编码结果,应该是汉字‘一’。 && 【 在 pengtu (土人·天问) 的大作中提到: 】
: 试验了几个都不行。。
: Index of all identifiers in unit 'LCLProc'
: ...................
&& -- && ※ 修改:·pengtu 于 Oct 12 22:03:38 2012 修改本文·[FROM: 58.23.13.*]
※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Fri Oct 12 23:41:52 2012), 站内 && 我在找freepascal中哪个函数可以“转成 unicode 数值”。
【 在 eGust (十年) 的大作中提到: 】
: 这种东西你怎么会想有现成的呢?前面不有人已经说了么,汉字有几个区,去 wiki 查 utf-8,转成 unicode 数值。然后再查汉字在哪几个区,判断一个数值在不在某几个区间。
-- && ※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Sat Oct 13 00:01:07 2012), 站内 && 在万一的博客上,有对delphi的 WideChar 比较清楚的解释,但我搬到Lazarus来会显示问号。 &&&& ShowMessage(#);&&&&{万一} && ShowMessage(#19975 + #19968); {万一,十进制赋值} && ShowMessage(#$4e07#$4e00);&&&&{万一,十六进制赋值} &&
&& 【 在 pengtu (土人·天问) 的大作中提到: 】
: 我在找freepascal中哪个函数可以“转成 unicode 数值”。
&& -- && ※ 修改:·pengtu 于 Oct 13 00:01:31 2012 修改本文·[FROM: 58.23.13.*]
※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Sat Oct 13 22:44:01 2012), 站内 && 这个我看到了,在你第一次回帖后。我贴出来是给大家看的 : )
现在的问题是,
fpc有没有类似 chr() 的函数呢?
chr()可以把数字编码为ANSI字符,fpc哪个函数可以把数字编码为utf8字符呢? &&&& 【 在 swhgoon (swhgoon) 的大作中提到: 】
: (S: $4E00; E: $9FFF; PG: 'CJK Unified Ideographs')
&& -- && ※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Sat Oct 13 23:21:16 2012), 站内 && 这个问题先别管(每次这个问题都发大水),先帮我把fpc的编码函数整明白了。
【 在 eGust (十年) 的大作中提到: 】
: U+3400~U+4DB5、U+E815~U+FA29、U+20000~U+2A6D6 等数万个汉字被无视了
&& -- && ※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Sun Oct 14 00:20:56 2012), 站内 && 你不要死抓着标题不放,问题已经迁移了。ps,你有灌水嫌疑!
【 在 eGust (十年) 的大作中提到: 】
: 前面已经告诉过你了,去 wiki 查 utf-8,你偏不去别人还能有啥办法?
&& -- && ※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Sun Oct 14 00:21:49 2012), 站内 && fpc跨平台,必然要内置解决。
【 在 HeliumLeoBob (721) 的大作中提到: 】
: 调用操作系统API比如WideCharToMultiByte/MultiByteToWideChar啊
: 有哪种语言是不用库直接搞定转码的?
&& -- && ※ 来源:·水木社区 ·[FROM: 58.23.13.*]
土人·春秋发信人: pengtu (土人·天问), 信区: Delphi
标&&题: Re: 怎么判断一个utf8字符是汉字呢?
发信站: 水木社区 (Mon Oct 15 01:09:21 2012), 站内 && 我第一次看到有人指出utf8在原理上的优势。
【 在 wincss (wincss) 的大作中提到: 】
: 我的理解,unicode定义了一堆字符的编号,如果计算机是以一个“整数”作为处理
: 单元的,那我们可以把unicode字符直接存进计算机,对于大部分编程语言,可以用
: 一个数组来描述这个事情
: ...................
: utf8只是另一种方法而已,其特点是由编号可以直接计算出编码,无需对照表,并
且支持全部(包括将来可能出现的)unicode编号过的字符,虽然ucs-2,ucs-4也可
以直接计算无需对照表,但只能支持有限多的unicode字符 &&&& --
&meta name="robots" content="none"& &&&& ※ 来源:·水木社区 ·[FROM: 58.23.13.*]
文章数:10&分页:我做了一个抓取程序,在处理来源字符串时我需要分辨字符串是utf8编码还是gb2312编码,但自己想了一些办法,并在网上看了大量帖子,还是不能完美的解决,有些字符辨别不出来。
我获取编码后,还要根据编码来取得在页面里我想得到的信息。
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
可以通过抓取回来的网页匹配:
&meta http-equiv="Content-Type" content="text/ charset=utf-8" /&
但是这样往往也不是非常精确。所以还是利用正则来判断。如下:
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E]
| [\xC2-\xDF][\x80-\xBF]
# non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF]
# excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
# straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF]
# excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2}
# planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3}
# planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2}
# plane 16
)*$%xs', $string);
<dd style="float:cursor:" title="声誉值:
我也奉献一个我以前用的,希望你能参考
function is_gb2312($str){
for($i=0; $i&strlen($str); $i++) {
$v = ord( $str[$i] );
if( $v & 127) {
if( ($v &= 228) && ($v &= 233) )
if( ($i+2) &= (strlen($str) - 1))
$v1 = ord( $str[$i+1] );
$v2 = ord( $str[$i+2] );
if( ($v1 &= 128) && ($v1 &=191) && ($v2 &=128) && ($v2 &= 191) ) // utf编码
}}function is_utf8($word){if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true){}else{}}
我倒觉得没什么必要检测所有的字符串编码,因为现在用到的也几乎就UTF-8和GBK等,下面这个方法是我在项目中用到的GBK转成UTF-8编码的方法,分享给你。
function myConv($data=array()){
$charset = mb_detect_encoding($data,array('UTF-8','GBK','GB2312'));
$charset = strtolower($charset);
if('cp936' == $charset){
$charset='GBK';
if("utf-8" != $charset){
$data = iconv($charset,"UTF-8//IGNORE",$data);
<dd style="float:cursor:" title="声誉值:
你的意思是在$_POST或$_GET接收过来的字符串不知道编码格式对吧,php内置函数mb_detect_encoding可以解决,但是有偶然性。有时候不准确,给你个比较笨但是很实用的办法:
detectCodeValue($value){
= @iconv( "UTF-8 ", "GB2312//IGNORE",$tmp_1);
@iconv( "GB2312 ", "UTF-8//IGNORE",$tmp_2);
(strlen($tmp_1)
strlen($tmp_3))
<dd style="float:cursor:" title="声誉值:
提供一个Java版的检测GBK、UTF-8、Big5
public class CnCharsetChecker {
public static boolean isGB2312( byte head,byte tail ){
int iHead = head & 0
int iTail = tail & 0
return ((iHead&=0xa1 && iHead&=0xf7 &&
iTail&=0xa1 && iTail&=0xfe) ? true : false);
public static boolean isGBK( byte head,byte tail ){
int iHead = head & 0
int iTail = tail & 0
return ((iHead&=0x81 && iHead&=0xfe &&
(iTail&=0x40 && iTail&=0x7e ||
iTail&=0x80 && iTail&=0xfe)) ? true : false);
public static boolean isBIG5( byte head,byte tail ){
int iHead = head & 0
int iTail = tail & 0
return ((iHead&=0xa1 && iHead&=0xf9 &&
(iTail&=0x40 && iTail&=0x7e ||
iTail&=0xa1 && iTail&=0xfe)) ? true : false);
public static void main(String[] args){
String sGB = "中国";
String sGBK = "愛";
String sBIG5 = "稲";
byte[] sChars =
sChars = sGB.getBytes();
System.out.println(sGB+" is "+
CnCharsetChecker.isGB2312(sChars[0],sChars[1])+" for GB2312;"+
CnCharsetChecker.isGBK(sChars[0],sChars[1])+" for GBK,"+
CnCharsetChecker.isBIG5(sChars[0],sChars[1])+" for BIG5");
sChars = sGBK.getBytes();
System.out.println(sGBK+" is "+
CnCharsetChecker.isGB2312(sChars[0],sChars[1])+" for GB2312;"+
CnCharsetChecker.isGBK(sChars[0],sChars[1])+" for GBK,"+
CnCharsetChecker.isBIG5(sChars[0],sChars[1])+" for BIG5");
sChars = sBIGgetBytes();
System.out.println(sBIG5+" is "+
CnCharsetChecker.isGB2312(sChars[0],sChars[1])+" for GB2312;"+
CnCharsetChecker.isGBK(sChars[0],sChars[1])+" for GBK,"+
CnCharsetChecker.isBIG5(sChars[0],sChars[1])+" for BIG5");
有个很简单的库~你可以使用iconv来做这件事情..网上有大量的教程跟资料
你觉得什么公司最常遇到千奇百怪的编码?是的,就是做浏览器的公司,Mozilla基金会。他们在很久以前就已经做过这件事,运用统计学的蒙地卡罗法,判断一列字串最有可能的编码, 还写成了一个库,叫chardet。
最常用的是python的库,但最近也有高手移植到上了。
基本用法很简单,就是给一列字串,返回JSON结果,给出最有可能的编码集,和该编码集的信赖区间。
var jschardet = require("jschardet")// "àíà??" in UTF-8jschardet.detect("\xc3\xa0\xc3\xad\xc3\xa0\xc3\xa7\xc3\xa3")// { encoding: "utf-8", confidence: 0.9690625 }// "次常用國字標準字體表" in Big5 jschardet.detect("\xa6\xb8\xb1\x60\xa5\xce\xb0\xea\xa6\x72\xbc\xd0\xb7\xc7\xa6\x72\xc5\xe9\xaa\xed")// { encoding: "Big5", confidence: 0.99 }
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (24992) 次如何判断一个字符串用的是否是utf-8编码格式?rt
回答1:尝试解码。utf8还是很规律的。
希望有帮助
sunlu2007okok

我要回帖

更多关于 神探伽利略百度云资源 的文章

 

随机推荐