14 个解决方案
#1
啥意思?
难道不能LIKE 或者 INSTR吗?
直接
SET NAMES UTF8;
然后
SELECT 就可以了
难道不能LIKE 或者 INSTR吗?
直接
SET NAMES UTF8;
然后
SELECT 就可以了
#2
估计LZ的意思是查询一个时,能同时出现简体和繁体2个.
#3
不好意思,没有描述得清楚,就是楼上的意思
发表于:2008-01-11 08:58:132楼 得分:0
估计LZ的意思是查询一个时,能同时出现简体和繁体2个.
发表于:2008-01-11 08:58:132楼 得分:0
估计LZ的意思是查询一个时,能同时出现简体和繁体2个.
#4
比如数据库utf-8格式存储了"测试" "測試"
当我只输入简体测试时,要能同时搜索到两个结果
当我只输入简体测试时,要能同时搜索到两个结果
#5
两个字段分别存就可以读了。
#6
感觉有点像百度的搜索
输入繁体字点搜索后自动变成简体的
这个应该是网页的功能
用数据库如何解决
关注
输入繁体字点搜索后自动变成简体的
这个应该是网页的功能
用数据库如何解决
关注
#7
我想你需要一个简繁转换程序
#8
要同时搜索的话,你得有两个库,一个是简体库,另外一个是繁体库。
搜索的时候或者用全文搜索,或者用OR 来搜索。
搜索的时候或者用全文搜索,或者用OR 来搜索。
#9
简繁转换程序
#10
API方法,这是Windows下开发最常用最简单的方法,利用Windows系统自带的API函数,寥寥数行代码即可完成,典型的例子就是
Windows2000自带的例子,核心代码可以简单列一个
function GB2312ToBIG5(GB2312Str: string): AnsiString;
var
iLen: Integer;
PGBCHSStr: PChar; //GB编码的简体字符
PGBCHTStr: PChar; //GB编码的繁体字符
PUnicodeChar: PWideChar; //Unicode编码的字符
PBIG5Str: PChar; //BIG5编码的字符
begin
PGBCHSStr:=PChar(GB2312Str);
iLen:=MultiByteToWideChar(936,0,PGBCHSStr,-1,nil,0); //计算转换的字符数
GetMem(PGBCHTStr,iLen*2+1); //分配内存
LCMapString($0804,LCMAP_TRADITIONAL_CHINESE,PGBCHSStr,-1,PGBCHTStr,iLen*2); //转换GB码简体到GB码繁体
GetMem(PUnicodeChar,iLen*2); //分配内存
MultiByteToWideChar(936,0,PGBCHTStr,-1,PUnicodeChar,iLen); //转换GB码到Unicode码
iLen:=WideCharToMultiByte(950,0,PUnicodeChar,-1,nil,0,nil,nil);
GetMem(PBIG5Str,iLen);
WideCharToMultiByte(950,0,PUnicodeChar,-1,PBIG5Str,iLen,nil,nil);
Result:=string(PBIG5Str);
FreeMem(PBIG5Str);
FreeMem(PUnicodeChar);
FreeMem(PGBCHTStr);
end;
这是Delphi的方式,根据变量定义模式及开发工具不同,代码量会不同,但核心的就那几行
2、码表法有2种,一种是文件模式,一种是对照码表模式
文件模式
如果十年前你接触过软件开发,通过C语言调用UCDOS的字库显示汉字这招应该玩过,那么这个原理是一样的,条件是找一个合适的字库。该
方法主要利用了gb-big5.tab或big5-gb.tab等码表文件进行,这种方式在网络开发及JAVA开发中用的特别多,核心代码也很简单
#define TABLE "gb-big5.tab"
extern void usage(void);
extern void convert(FILE *fp);
void main(int argc,char **argv)
{
char *source;
FILE *fp;
if (argc!=2) usage();
source=argv[1];
setbuf(stdout,NULL);
if (access(TABLE,4)!=0) usage();
if (source==NULL) usage();
if (strlen(source)==0) usage();
fp=fopen(source,"r");
if (fp==NULL) usage();
convert(fp);
fclose(fp);
fflush(stdout);
fclose(stdout);
}
void convert(FILE *fp)
{
FILE *table;
int c,x;
long address;
table=fopen(TABLE,"r");
do {
c=fgetc(fp);
if (c>=0xA0) {
x=fgetc(fp);
address=((c-0xA0)*510)+(x-1)*2;
fseek(table,address,SEEK_SET);
c=fgetc(table); x=fgetc(table);
if (c!=0&&x!=0) fprintf(stdout,"%c%c",c,x);
} else
if (c!=EOF) fputc(c,stdout);
} while (c!=EOF);
fclose(table);
}
对照码表
这种方法的原理是,把所有的汉字的内码通过变量或者一定的规则仔细定义好,然后据表查询即可,譬如“国”的简体内码是$B9FA,繁体
内码是$B0EA,建立一个变脸表,一个存储所有简体汉字,一个存储所有繁体汉字,一一对应,马上就出来了
3、对照表法
对照表法应该是最实用最简单的简繁转换方式了,这个方法和对照码表方式差不多,区别在于对照码表法用内码,此方法直接用汉字显示,
同一个文件或不同文件里面存储简体和繁体的对照表,这个方法的最大好处是照顾行文习惯,这是所有国家化软件必须的方法,譬如
服务器 - 伺服器
文件 - 檔案
.....
这种方式最大的麻烦是找一个好的对照表,很多公开代码的浏览器包括了这些,Linux下也包括了,当然一些好的对照表可以自己去维护
4、mlang方法
这种方法其实就是利用IE的API函数ConvertString,只是要自己定义而已,函数定义为
HRESULT ConvertString(
DWORD *pdwMode,
DWORD dwSrcEncoding,
DWORD dwDstEncoding,
BYTE *pSrcStr,
UINT *pcSrcSize,
BYTE *pDstStr,
UINT *pcDstSize
);
具体可以去查MSDN
以上一共介绍了4种方法,细分来总共是5种方法。
还有一种方法就是利用标准Unicode码表去查,这个码表是MS制作的,也就形成了标准。这个是根据MS的GBK字库制作的
譬如“國”在简体码表库中的编码是$87F8,那么根据码表查出其Unicode码是$570B,然后根据Unicode码$570B到繁体码表库中查到繁体内码是
$B0EA,问题就解决了,这个码表库可以到ftp://ftp.unicode.org/Public/MAPPINGS/去下载。936是简体,950是繁体
当然,还有更多分方法,譬如Access转换法,SQL转换法,但基本原理无外乎以上的几种方法。
Windows2000自带的例子,核心代码可以简单列一个
function GB2312ToBIG5(GB2312Str: string): AnsiString;
var
iLen: Integer;
PGBCHSStr: PChar; //GB编码的简体字符
PGBCHTStr: PChar; //GB编码的繁体字符
PUnicodeChar: PWideChar; //Unicode编码的字符
PBIG5Str: PChar; //BIG5编码的字符
begin
PGBCHSStr:=PChar(GB2312Str);
iLen:=MultiByteToWideChar(936,0,PGBCHSStr,-1,nil,0); //计算转换的字符数
GetMem(PGBCHTStr,iLen*2+1); //分配内存
LCMapString($0804,LCMAP_TRADITIONAL_CHINESE,PGBCHSStr,-1,PGBCHTStr,iLen*2); //转换GB码简体到GB码繁体
GetMem(PUnicodeChar,iLen*2); //分配内存
MultiByteToWideChar(936,0,PGBCHTStr,-1,PUnicodeChar,iLen); //转换GB码到Unicode码
iLen:=WideCharToMultiByte(950,0,PUnicodeChar,-1,nil,0,nil,nil);
GetMem(PBIG5Str,iLen);
WideCharToMultiByte(950,0,PUnicodeChar,-1,PBIG5Str,iLen,nil,nil);
Result:=string(PBIG5Str);
FreeMem(PBIG5Str);
FreeMem(PUnicodeChar);
FreeMem(PGBCHTStr);
end;
这是Delphi的方式,根据变量定义模式及开发工具不同,代码量会不同,但核心的就那几行
2、码表法有2种,一种是文件模式,一种是对照码表模式
文件模式
如果十年前你接触过软件开发,通过C语言调用UCDOS的字库显示汉字这招应该玩过,那么这个原理是一样的,条件是找一个合适的字库。该
方法主要利用了gb-big5.tab或big5-gb.tab等码表文件进行,这种方式在网络开发及JAVA开发中用的特别多,核心代码也很简单
#define TABLE "gb-big5.tab"
extern void usage(void);
extern void convert(FILE *fp);
void main(int argc,char **argv)
{
char *source;
FILE *fp;
if (argc!=2) usage();
source=argv[1];
setbuf(stdout,NULL);
if (access(TABLE,4)!=0) usage();
if (source==NULL) usage();
if (strlen(source)==0) usage();
fp=fopen(source,"r");
if (fp==NULL) usage();
convert(fp);
fclose(fp);
fflush(stdout);
fclose(stdout);
}
void convert(FILE *fp)
{
FILE *table;
int c,x;
long address;
table=fopen(TABLE,"r");
do {
c=fgetc(fp);
if (c>=0xA0) {
x=fgetc(fp);
address=((c-0xA0)*510)+(x-1)*2;
fseek(table,address,SEEK_SET);
c=fgetc(table); x=fgetc(table);
if (c!=0&&x!=0) fprintf(stdout,"%c%c",c,x);
} else
if (c!=EOF) fputc(c,stdout);
} while (c!=EOF);
fclose(table);
}
对照码表
这种方法的原理是,把所有的汉字的内码通过变量或者一定的规则仔细定义好,然后据表查询即可,譬如“国”的简体内码是$B9FA,繁体
内码是$B0EA,建立一个变脸表,一个存储所有简体汉字,一个存储所有繁体汉字,一一对应,马上就出来了
3、对照表法
对照表法应该是最实用最简单的简繁转换方式了,这个方法和对照码表方式差不多,区别在于对照码表法用内码,此方法直接用汉字显示,
同一个文件或不同文件里面存储简体和繁体的对照表,这个方法的最大好处是照顾行文习惯,这是所有国家化软件必须的方法,譬如
服务器 - 伺服器
文件 - 檔案
.....
这种方式最大的麻烦是找一个好的对照表,很多公开代码的浏览器包括了这些,Linux下也包括了,当然一些好的对照表可以自己去维护
4、mlang方法
这种方法其实就是利用IE的API函数ConvertString,只是要自己定义而已,函数定义为
HRESULT ConvertString(
DWORD *pdwMode,
DWORD dwSrcEncoding,
DWORD dwDstEncoding,
BYTE *pSrcStr,
UINT *pcSrcSize,
BYTE *pDstStr,
UINT *pcDstSize
);
具体可以去查MSDN
以上一共介绍了4种方法,细分来总共是5种方法。
还有一种方法就是利用标准Unicode码表去查,这个码表是MS制作的,也就形成了标准。这个是根据MS的GBK字库制作的
譬如“國”在简体码表库中的编码是$87F8,那么根据码表查出其Unicode码是$570B,然后根据Unicode码$570B到繁体码表库中查到繁体内码是
$B0EA,问题就解决了,这个码表库可以到ftp://ftp.unicode.org/Public/MAPPINGS/去下载。936是简体,950是繁体
当然,还有更多分方法,譬如Access转换法,SQL转换法,但基本原理无外乎以上的几种方法。
#11
提交时进行转换了,但是速度有影响
#12
http://www.zeali.net/entry/19
#13
个人想到个简单方法,先检测一下字符是简体还是繁体,如果是简体的话,再多转一个变量为繁体出来,反之则一样,然后再进行搜索!
$str="测试";
if ( preg_match("/^(?:\w|[\x80-\xff])$/", $str )){
$str1=iconv("gbk", "utf-8", $str);
$str2=iconv("big5", "utf-8", iconv("gbk", "big5", $str));
}else{
$str1=iconv("big5", "utf-8", $str));
$str2=iconv("gbk", "utf-8", iconv("big5", "gbk", $str));
}
然后在PHP中的查询语句类似为 select * from DB where name like '%$str1%' or name like '%$str2%'
$str="测试";
if ( preg_match("/^(?:\w|[\x80-\xff])$/", $str )){
$str1=iconv("gbk", "utf-8", $str);
$str2=iconv("big5", "utf-8", iconv("gbk", "big5", $str));
}else{
$str1=iconv("big5", "utf-8", $str));
$str2=iconv("gbk", "utf-8", iconv("big5", "gbk", $str));
}
然后在PHP中的查询语句类似为 select * from DB where name like '%$str1%' or name like '%$str2%'
#14
一次简体搜索,然后转换成繁体搜索,应该就可以了把。
试试下面这个工具包:
http://download.csdn.net/source/727562
一个中文 简体-繁体 互相转换的JAVA工具(*.jar文件)
内存消耗不会超过60K。
1S能转换30W汉字。
内部附有测试用例 和 源代码 , 帮助文档 。
可能对你有用
试试下面这个工具包:
http://download.csdn.net/source/727562
一个中文 简体-繁体 互相转换的JAVA工具(*.jar文件)
内存消耗不会超过60K。
1S能转换30W汉字。
内部附有测试用例 和 源代码 , 帮助文档 。
可能对你有用
#1
啥意思?
难道不能LIKE 或者 INSTR吗?
直接
SET NAMES UTF8;
然后
SELECT 就可以了
难道不能LIKE 或者 INSTR吗?
直接
SET NAMES UTF8;
然后
SELECT 就可以了
#2
估计LZ的意思是查询一个时,能同时出现简体和繁体2个.
#3
不好意思,没有描述得清楚,就是楼上的意思
发表于:2008-01-11 08:58:132楼 得分:0
估计LZ的意思是查询一个时,能同时出现简体和繁体2个.
发表于:2008-01-11 08:58:132楼 得分:0
估计LZ的意思是查询一个时,能同时出现简体和繁体2个.
#4
比如数据库utf-8格式存储了"测试" "測試"
当我只输入简体测试时,要能同时搜索到两个结果
当我只输入简体测试时,要能同时搜索到两个结果
#5
两个字段分别存就可以读了。
#6
感觉有点像百度的搜索
输入繁体字点搜索后自动变成简体的
这个应该是网页的功能
用数据库如何解决
关注
输入繁体字点搜索后自动变成简体的
这个应该是网页的功能
用数据库如何解决
关注
#7
我想你需要一个简繁转换程序
#8
要同时搜索的话,你得有两个库,一个是简体库,另外一个是繁体库。
搜索的时候或者用全文搜索,或者用OR 来搜索。
搜索的时候或者用全文搜索,或者用OR 来搜索。
#9
简繁转换程序
#10
API方法,这是Windows下开发最常用最简单的方法,利用Windows系统自带的API函数,寥寥数行代码即可完成,典型的例子就是
Windows2000自带的例子,核心代码可以简单列一个
function GB2312ToBIG5(GB2312Str: string): AnsiString;
var
iLen: Integer;
PGBCHSStr: PChar; //GB编码的简体字符
PGBCHTStr: PChar; //GB编码的繁体字符
PUnicodeChar: PWideChar; //Unicode编码的字符
PBIG5Str: PChar; //BIG5编码的字符
begin
PGBCHSStr:=PChar(GB2312Str);
iLen:=MultiByteToWideChar(936,0,PGBCHSStr,-1,nil,0); //计算转换的字符数
GetMem(PGBCHTStr,iLen*2+1); //分配内存
LCMapString($0804,LCMAP_TRADITIONAL_CHINESE,PGBCHSStr,-1,PGBCHTStr,iLen*2); //转换GB码简体到GB码繁体
GetMem(PUnicodeChar,iLen*2); //分配内存
MultiByteToWideChar(936,0,PGBCHTStr,-1,PUnicodeChar,iLen); //转换GB码到Unicode码
iLen:=WideCharToMultiByte(950,0,PUnicodeChar,-1,nil,0,nil,nil);
GetMem(PBIG5Str,iLen);
WideCharToMultiByte(950,0,PUnicodeChar,-1,PBIG5Str,iLen,nil,nil);
Result:=string(PBIG5Str);
FreeMem(PBIG5Str);
FreeMem(PUnicodeChar);
FreeMem(PGBCHTStr);
end;
这是Delphi的方式,根据变量定义模式及开发工具不同,代码量会不同,但核心的就那几行
2、码表法有2种,一种是文件模式,一种是对照码表模式
文件模式
如果十年前你接触过软件开发,通过C语言调用UCDOS的字库显示汉字这招应该玩过,那么这个原理是一样的,条件是找一个合适的字库。该
方法主要利用了gb-big5.tab或big5-gb.tab等码表文件进行,这种方式在网络开发及JAVA开发中用的特别多,核心代码也很简单
#define TABLE "gb-big5.tab"
extern void usage(void);
extern void convert(FILE *fp);
void main(int argc,char **argv)
{
char *source;
FILE *fp;
if (argc!=2) usage();
source=argv[1];
setbuf(stdout,NULL);
if (access(TABLE,4)!=0) usage();
if (source==NULL) usage();
if (strlen(source)==0) usage();
fp=fopen(source,"r");
if (fp==NULL) usage();
convert(fp);
fclose(fp);
fflush(stdout);
fclose(stdout);
}
void convert(FILE *fp)
{
FILE *table;
int c,x;
long address;
table=fopen(TABLE,"r");
do {
c=fgetc(fp);
if (c>=0xA0) {
x=fgetc(fp);
address=((c-0xA0)*510)+(x-1)*2;
fseek(table,address,SEEK_SET);
c=fgetc(table); x=fgetc(table);
if (c!=0&&x!=0) fprintf(stdout,"%c%c",c,x);
} else
if (c!=EOF) fputc(c,stdout);
} while (c!=EOF);
fclose(table);
}
对照码表
这种方法的原理是,把所有的汉字的内码通过变量或者一定的规则仔细定义好,然后据表查询即可,譬如“国”的简体内码是$B9FA,繁体
内码是$B0EA,建立一个变脸表,一个存储所有简体汉字,一个存储所有繁体汉字,一一对应,马上就出来了
3、对照表法
对照表法应该是最实用最简单的简繁转换方式了,这个方法和对照码表方式差不多,区别在于对照码表法用内码,此方法直接用汉字显示,
同一个文件或不同文件里面存储简体和繁体的对照表,这个方法的最大好处是照顾行文习惯,这是所有国家化软件必须的方法,譬如
服务器 - 伺服器
文件 - 檔案
.....
这种方式最大的麻烦是找一个好的对照表,很多公开代码的浏览器包括了这些,Linux下也包括了,当然一些好的对照表可以自己去维护
4、mlang方法
这种方法其实就是利用IE的API函数ConvertString,只是要自己定义而已,函数定义为
HRESULT ConvertString(
DWORD *pdwMode,
DWORD dwSrcEncoding,
DWORD dwDstEncoding,
BYTE *pSrcStr,
UINT *pcSrcSize,
BYTE *pDstStr,
UINT *pcDstSize
);
具体可以去查MSDN
以上一共介绍了4种方法,细分来总共是5种方法。
还有一种方法就是利用标准Unicode码表去查,这个码表是MS制作的,也就形成了标准。这个是根据MS的GBK字库制作的
譬如“國”在简体码表库中的编码是$87F8,那么根据码表查出其Unicode码是$570B,然后根据Unicode码$570B到繁体码表库中查到繁体内码是
$B0EA,问题就解决了,这个码表库可以到ftp://ftp.unicode.org/Public/MAPPINGS/去下载。936是简体,950是繁体
当然,还有更多分方法,譬如Access转换法,SQL转换法,但基本原理无外乎以上的几种方法。
Windows2000自带的例子,核心代码可以简单列一个
function GB2312ToBIG5(GB2312Str: string): AnsiString;
var
iLen: Integer;
PGBCHSStr: PChar; //GB编码的简体字符
PGBCHTStr: PChar; //GB编码的繁体字符
PUnicodeChar: PWideChar; //Unicode编码的字符
PBIG5Str: PChar; //BIG5编码的字符
begin
PGBCHSStr:=PChar(GB2312Str);
iLen:=MultiByteToWideChar(936,0,PGBCHSStr,-1,nil,0); //计算转换的字符数
GetMem(PGBCHTStr,iLen*2+1); //分配内存
LCMapString($0804,LCMAP_TRADITIONAL_CHINESE,PGBCHSStr,-1,PGBCHTStr,iLen*2); //转换GB码简体到GB码繁体
GetMem(PUnicodeChar,iLen*2); //分配内存
MultiByteToWideChar(936,0,PGBCHTStr,-1,PUnicodeChar,iLen); //转换GB码到Unicode码
iLen:=WideCharToMultiByte(950,0,PUnicodeChar,-1,nil,0,nil,nil);
GetMem(PBIG5Str,iLen);
WideCharToMultiByte(950,0,PUnicodeChar,-1,PBIG5Str,iLen,nil,nil);
Result:=string(PBIG5Str);
FreeMem(PBIG5Str);
FreeMem(PUnicodeChar);
FreeMem(PGBCHTStr);
end;
这是Delphi的方式,根据变量定义模式及开发工具不同,代码量会不同,但核心的就那几行
2、码表法有2种,一种是文件模式,一种是对照码表模式
文件模式
如果十年前你接触过软件开发,通过C语言调用UCDOS的字库显示汉字这招应该玩过,那么这个原理是一样的,条件是找一个合适的字库。该
方法主要利用了gb-big5.tab或big5-gb.tab等码表文件进行,这种方式在网络开发及JAVA开发中用的特别多,核心代码也很简单
#define TABLE "gb-big5.tab"
extern void usage(void);
extern void convert(FILE *fp);
void main(int argc,char **argv)
{
char *source;
FILE *fp;
if (argc!=2) usage();
source=argv[1];
setbuf(stdout,NULL);
if (access(TABLE,4)!=0) usage();
if (source==NULL) usage();
if (strlen(source)==0) usage();
fp=fopen(source,"r");
if (fp==NULL) usage();
convert(fp);
fclose(fp);
fflush(stdout);
fclose(stdout);
}
void convert(FILE *fp)
{
FILE *table;
int c,x;
long address;
table=fopen(TABLE,"r");
do {
c=fgetc(fp);
if (c>=0xA0) {
x=fgetc(fp);
address=((c-0xA0)*510)+(x-1)*2;
fseek(table,address,SEEK_SET);
c=fgetc(table); x=fgetc(table);
if (c!=0&&x!=0) fprintf(stdout,"%c%c",c,x);
} else
if (c!=EOF) fputc(c,stdout);
} while (c!=EOF);
fclose(table);
}
对照码表
这种方法的原理是,把所有的汉字的内码通过变量或者一定的规则仔细定义好,然后据表查询即可,譬如“国”的简体内码是$B9FA,繁体
内码是$B0EA,建立一个变脸表,一个存储所有简体汉字,一个存储所有繁体汉字,一一对应,马上就出来了
3、对照表法
对照表法应该是最实用最简单的简繁转换方式了,这个方法和对照码表方式差不多,区别在于对照码表法用内码,此方法直接用汉字显示,
同一个文件或不同文件里面存储简体和繁体的对照表,这个方法的最大好处是照顾行文习惯,这是所有国家化软件必须的方法,譬如
服务器 - 伺服器
文件 - 檔案
.....
这种方式最大的麻烦是找一个好的对照表,很多公开代码的浏览器包括了这些,Linux下也包括了,当然一些好的对照表可以自己去维护
4、mlang方法
这种方法其实就是利用IE的API函数ConvertString,只是要自己定义而已,函数定义为
HRESULT ConvertString(
DWORD *pdwMode,
DWORD dwSrcEncoding,
DWORD dwDstEncoding,
BYTE *pSrcStr,
UINT *pcSrcSize,
BYTE *pDstStr,
UINT *pcDstSize
);
具体可以去查MSDN
以上一共介绍了4种方法,细分来总共是5种方法。
还有一种方法就是利用标准Unicode码表去查,这个码表是MS制作的,也就形成了标准。这个是根据MS的GBK字库制作的
譬如“國”在简体码表库中的编码是$87F8,那么根据码表查出其Unicode码是$570B,然后根据Unicode码$570B到繁体码表库中查到繁体内码是
$B0EA,问题就解决了,这个码表库可以到ftp://ftp.unicode.org/Public/MAPPINGS/去下载。936是简体,950是繁体
当然,还有更多分方法,譬如Access转换法,SQL转换法,但基本原理无外乎以上的几种方法。
#11
提交时进行转换了,但是速度有影响
#12
http://www.zeali.net/entry/19
#13
个人想到个简单方法,先检测一下字符是简体还是繁体,如果是简体的话,再多转一个变量为繁体出来,反之则一样,然后再进行搜索!
$str="测试";
if ( preg_match("/^(?:\w|[\x80-\xff])$/", $str )){
$str1=iconv("gbk", "utf-8", $str);
$str2=iconv("big5", "utf-8", iconv("gbk", "big5", $str));
}else{
$str1=iconv("big5", "utf-8", $str));
$str2=iconv("gbk", "utf-8", iconv("big5", "gbk", $str));
}
然后在PHP中的查询语句类似为 select * from DB where name like '%$str1%' or name like '%$str2%'
$str="测试";
if ( preg_match("/^(?:\w|[\x80-\xff])$/", $str )){
$str1=iconv("gbk", "utf-8", $str);
$str2=iconv("big5", "utf-8", iconv("gbk", "big5", $str));
}else{
$str1=iconv("big5", "utf-8", $str));
$str2=iconv("gbk", "utf-8", iconv("big5", "gbk", $str));
}
然后在PHP中的查询语句类似为 select * from DB where name like '%$str1%' or name like '%$str2%'
#14
一次简体搜索,然后转换成繁体搜索,应该就可以了把。
试试下面这个工具包:
http://download.csdn.net/source/727562
一个中文 简体-繁体 互相转换的JAVA工具(*.jar文件)
内存消耗不会超过60K。
1S能转换30W汉字。
内部附有测试用例 和 源代码 , 帮助文档 。
可能对你有用
试试下面这个工具包:
http://download.csdn.net/source/727562
一个中文 简体-繁体 互相转换的JAVA工具(*.jar文件)
内存消耗不会超过60K。
1S能转换30W汉字。
内部附有测试用例 和 源代码 , 帮助文档 。
可能对你有用