• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    檢查有日文片假名的新聞

    發布: 2007-7-14 19:37 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 17次 | 進入軟件測試論壇討論

    領測軟件測試網

    ==26個日文片假名導致Access搜索(80040e14/內存溢出)的解決辦法==

    ゴ ガ ギ グ ゲ ザ ジ ズ ヅ デ ド ポ ベ プ ビ パ ヴ ボ ペ ブ ピ バ ヂ ダ ゾ ゼ
    當字段內包含了這26個日文字符任意一個多個時,就會導致在執行SQL語句中包含了
    [字段] like '%aaaaa%' 或 inStr(1,[字段],'aaaaa',1)>0
    這樣的查詢時,毫無道理的出現了
    "Microsoft JET Database Engine 錯誤 '80040e14' 內存溢出"的錯誤
    其他Jet SQL函數命令未作測試,大概與字符搜索定位匹配相關的都可能出錯

    搜索相關資料得知被微軟工程師證實是Access的bug,可能是語法關系都是微軟的東東
    VBs中 執行inStr(1,日文平假名變量,"aaaaa",1)依然要出現錯誤
    Microsoft VBScript 運行時錯誤 錯誤 '800a0005' 無效的過程調用或參數: 'instr'


    沒有搜索,因這幾個字符出現Access的論壇網站搜索無法進行,何等痛苦
    昨天一朋友大叫怪事,他的音樂數據庫無法搜索了,只有30000條記錄時是好的
    毫無疑問,日文片假名是禍根,花幾分鐘把有包含上面的日文替換成"?"搜索順利恢復
    找來論壇程序用戶群最大的動網dvBBS AC版本 7.0SP2 版測試,同樣有這個日文發帖后 導致無法搜索并且運行時出錯的問題
    線上去搜索 '80040e14' 內存溢出" 的錯誤 多的是!

    一簡單有效的解決辦法:
    對這26個字符進行編碼和解碼,可能效率感覺不理想,測試下來問題不大,速度影響不是太大

    編碼:

    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

    注意,如果直接使用字符不方便(Windows還沒裝日文支持),注釋掉的部分提供有 chr(-23804) ..這樣的定義

    這樣
    1.
    表單輸入保存時,使用Jencode()將這26個字符先編碼再保存(為什么是這26個字符,經過全部測試87個平假名89個片假名最終認定的)

    本新聞共4頁,當前在第1頁  1  2  3  4  

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>