[以下内容仅适用在asp+access站]
今天发现采集的数据中带有日文字符的话会使站点全文搜索失效(提示内存溢出),网上搜索出原因是"26个日文字符捣的鬼",这是access数据库的BUG.小弟根据网上的指导,已解决了这个问题.现特意分享给大家.
1.建立内容替换规则
ゴ,ガ,ギ,グ,ゲ,ザ,ジ,ズ,ヅ,デ,ド,ポ,ベ,プ,ビ,パ,ヴ,ボ,ペ,ブ,ピ,バ,ヂ,ダ,ゾ,ゼ
以上字符分别替换为Jn0; ....Jn25; (Jn可任意定义)
2.在数据浏览页<!--#include file="jp_code.asp"-->
jp_code.asp如下
- <%
- '编码
- Function Jencode(byVal iStr)
- if isnull(iStr) or isEmpty(iStr) then
- Jencode=""
- Exit function
- end if
- dim F,i,E
- ' F=array("ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ",_
- ' "ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ",_
- ' "ヂ","ダ","ゾ","ゼ")
- E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;")
- F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_
- chr(-23118),chr(-23114),chr(-23112),chr(-23110),_
- chr(-23099),chr(-23097),chr(-23095),chr(-23075),_
- chr(-23079),chr(-23081),chr(-23085),chr(-23087),_
- chr(-23052),chr(-23076),chr(-23078),chr(-23082),_
- chr(-23084),chr(-23088),chr(-23102),chr(-23104),_
- chr(-23106),chr(-23108))
- Jencode=iStr
- for i=0 to 25
- Jencode=replace(Jencode,F(i),E(i))
- next
- End Function
- '解码:
- Function Juncode(byVal iStr)
- if isnull(iStr) or isEmpty(iStr) then
- Juncode=""
- Exit function
- end if
- dim F,i,E
- ' F=array("ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ",_
- ' "ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ",_
- ' "ヂ","ダ","ゾ","ゼ")
- E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;")
- F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_
- chr(-23118),chr(-23114),chr(-23112),chr(-23110),_
- chr(-23099),chr(-23097),chr(-23095),chr(-23075),_
- chr(-23079),chr(-23081),chr(-23085),chr(-23087),_
- chr(-23052),chr(-23076),chr(-23078),chr(-23082),_
- chr(-23084),chr(-23088),chr(-23102),chr(-23104),_
- chr(-23106),chr(-23108))
- Juncode=iStr
- for i=0 to 25
- Juncode=replace(Juncode,E(i),F(i))'□
- next
- End Function
- %>
复制代码
3.在需要的位置进行编码和解码.
例如<%=Juncode(rs("username"))%> <----将读取的数据库字段值解码还原
搜索示例:
sql="select * from 表 where (字段 like '%"&Jencode(kword)&"%') order by id desc" <--将输入的关键字编码
以上代码非原创,只是在遇到采集带日文字的情况下才找到并总结的一个解决方法而已,希望对大家有用,谢谢!
[ 本帖最后由 teamoustar 于 2007-4-13 16:46 编辑 ] |