一简单有效的解决办法:
对这26个字符进行编码和解码,可能效率感觉不理想,测试下来问题不大,速度影响不是太大
编码:
Function Jencode(byVal iStr)
if isnull(iStr) or isEmpty(iStr) then
Jencode=""
Exit function
end if
dim F,i,E
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
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个片假名最终认定的)
如
ゴ 即 chr(-23116) 编码为 Jn1;
2.
显示时,则使用 Juncode() 函数进行解码,还原日文片假名显示
3.
搜索关键字,也要使用 Jencode() 进行编码后再放入 like里
where [Topic] like '%Jencode(kewwords)%' 使用
才能保证搜索的值和编码过的数据库字段内容匹配
==================================
PS:
也可以使用正则表达式来改写上面的两个函数,或许效率还要更高些
再就是如果 压根不使用日文,也不需要搜索日文,则解码部分可以不用,保存数据实直接把这26个片假名字符替换为空字符或任一字符,比如"□"
抛砖引玉,如果有更本质的真正的好方法,谢分享
附:
----------------------------
平假名87个 asc值
-23391 --> -23316
unicode 3040-309F
ぁあぃいぅうぇえぉお
かがきぎくぐけげこご
さざしじすずせぜそぞ
ただちぢっつづてでと
どなにぬねのはばぱひ
びぴふぶぷへべぺほぼ
ぽまみむめもゃやゅゆ
ょよらりるれろゎわゐ
ゑをん゛゜ゝゞ
------------------------------
片假名89个 asc值
-23135 -> -23059
unicode 30A0-30FF
ァアィイゥウェエォオ
カガキギクグケゲコゴ
サザシジスズセゼソゾ
タダチヂッツヅテデト
ドナニヌネノハバパヒ
ビピフブプヘベペホボ
ポマミムメモャヤュユ
ョヨラリルレロヮワヰ
ヱヲンヴヵヶーヽヾ
================补充 修改的版本===========================
添加一个编码解码参数codeType
都使用一个函数
使用chr()不直接使用日文字符
这样~ 够简洁了吧?
疑点: 显示日文是不会出错的,保存到数据库也不会出错
只有SQL使用 like 和 inStr 的时候 才会出错 这个与显示无关!
还有在vbs里使用 inStr(1,str,"aaa",1)这样按字符搜索也会错
改为 inStr(lcase(str),"aaa") 就不会出错
如果一定得用inStr(1,str,"aaa",1) 字符搜索语法
则一定要在先inStr() 后 jncode() 的顺序 否则会出错
一点问题都没有! 注意到这几点绝对没错!
rs("TopicStr")=Jncode(TopicStr,true)'encode 保存到数据库的资料
DisplayStr=Jncode(rs("TopicStr"),false) 'uncode '显示到页面的标题
Function Jncode(byVal iStr,codeType)
if isnull(iStr) or isEmpty(iStr) or iStr="" then
Jncode="" : Exit function
end if
dim F,i,E
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))
if codyType then
for i=0 to 25 iStr=replace(iStr,F(i),E(i)) next
else
for i=0 to 25 iStr=replace(iStr,E(i),F(i)) next
end if
Jncode=iStr
End Function
分享到:
相关推荐
编写一个输出全部日文片假名的java应用程序。
因此,“日本语片假名转换器japanhr”提供了一个实用的解决方案,通过软件内置的字典库,可快速转换汉字到片假名,帮助用户查找到正确的读音,从而扫除学习障碍。 尽管该转换器可以独立使用,但若结合其他学习资源...
日文初学者 日文打字初学者
传统的日文键盘,例如“JIS”键盘,与英文QWERTY键盘在键位上有显著区别,增加了用于输入平假名、片假名以及汉字的特殊键。这些特殊键通常包括“罗马字输入”模式(Hiragana、Katakana和罗马字母间的切换)和“直接...
这时,就需要安装额外的日文字库来解决这个问题。 "win7 8 10系统日文字库"就是针对这种情况提供的解决方案。这个压缩包文件包含了专为Win7、8、10系统设计的日文字库,其目的是为了确保CAD软件能正确识别并显示...
日文乱码尤其常见,因为日语使用了多种字符集,包括平假名、片假名和汉字,这些字符在不同的编码标准(如Shift-JIS、EUC-JP、UTF-8等)中有不同的表示方式。 【描述】提到的"Locale Emulator 2.4.0.0官方版"是一个...
这个名为“VOCALOID辅助工具”的程序专门针对这一需求,提供了平假名和片假名到罗马音的转换功能。 首先,我们要理解平假名和片假名是日语中的两种音节文字,分别代表日语中的元音和辅音。平假名主要用在日常书写和...
总的来说,这个解决方案针对的是那些使用旧版PDF阅读器或者无法进行在线更新的用户,帮助他们解决因缺乏日文语言支持而导致的PDF阅读问题。通过安装提供的MSI包,用户可以确保其系统具备处理日文PDF文档的能力,从而...
平假名和片假名是日语中的两种基础书写系统,它们与汉字并存,构成了日语的文字体系。平假名通常用于日常写作、语法词和助词,而片假名则常用于外来词、强调或者特定的词汇。了解和熟练掌握平假名和片假名的书写对于...
"日文歌词转换器"是为了解决这个问题而设计的工具,它能帮助日语初学者更轻松地理解和学习日文歌曲中的歌词。 这个转换器的主要功能是自动给日文歌词中的中文汉字添加平假名注释。平假名是日本书写系统的一部分,是...
"PDF日文补丁包.rar"是一个解决此类问题的工具,它包含了能够帮助用户正确显示日文字符的字体和编码支持。这个压缩包中的主要文件是"FontPack1000_ja_JP.msi",这是一个安装程序,用于安装针对PDF阅读器的日文字体包...
描述中没有提供更多的具体信息,但我们可以推断,这个补丁可能是由于某些原因,如系统更新、错误操作或恶意软件的影响,导致用户的日文输入法无法正常工作,而此补丁正是为了解决这一问题。它可能包含了一些修复已知...
在Windows操作系统中,输入法是用户与计算机...总的来说,这个日文输入法恢复包为那些在精简版系统上需要使用日文输入法的用户提供了一个简便的解决方案,通过恢复关键的系统组件,使得日文输入法能在系统中正常运行。
总的来说,日文Shift_JIS码表是理解、处理和操作日文文本的基础工具,对于从事涉及日文内容的软件开发、数据处理和网络通信的IT专业人员来说,深入理解和使用这个码表至关重要。在实际工作中,我们需要根据具体需求...
文档中可能包括了如何在自己的Oracle环境中安装和调用这个函数的说明,以及任何必要的注意事项和潜在的问题解决方案。 总的来说,掌握这种特定的日语字符转换技术对于处理日语数据的Oracle数据库管理员和开发者来说...
标题中的“日文假名注音软件,看读音”表明了这个软件的主要功能是帮助用户获取日文单词或句子的正确发音。日文由平假名(hiragana)、片假名(katakana)和汉字组成,而假名是日语的基础,尤其对于初学者来说,掌握...
6. **日文汉字的特性**:日文汉字(平假名、片假名之外的汉字部分)在日语中承担词汇和语法结构的功能,与简体中文的使用有所不同。软件在转换过程中,需要考虑到日语的词汇和语法特点,确保转换后的内容符合日语的...
标题和描述中的“日文字库Sjis码表”和“sjis--gbk”涉及到的是计算机编码领域的一个重要概念——字符编码。字符编码是计算机处理、存储和传输文本信息的基础,它将各种字符(包括字母、数字、符号以及特定语言的...
对于日文来说,IME主要支持平假名、片假名和汉字的输入。在Windows XP中,原生并不包含日文输入法,因此需要额外安装。 要添加日文输入法,用户通常需要下载并安装相应的IME文件。"正版日文XP系统输入法IME文件下载...
南极星日文输入法提供了一个简单快捷的切换机制,通过Caps Lock键,用户可以在平假名和片假名之间快速切换,满足不同场景的输入需求。 在日语学习和使用中,罗马字输入是一种常见的辅助手段。罗马字系统有多种,如 ...