« 上一篇下一篇 »

重新认识 Replace 函数 replace韩文和日文的时候不能用的问题。

上次我重新修改了UBB的转换后,又很多朋友反映日文显示的时候出错了。我在本地测试了一下,结果出现了 Invalid procedure call or argument 的错误。原来是replace的时候出错了。我到MSDN上查了相关资料,微软的说法是:

 

When you call the Replace function that contains the vbTextCompare enumerated constant as the last parameter, and the first or second parameters contain a special character such as "ビ", you may receive the following error message:
Invalid procedure call or argument


VB的replace 函数的参数是这样的

 

Replace(e­xpression, find, replacewith[, compare[, count[, start]]])

参数
e­xpression
必选项。字符串表达式包含要替代的子字符串。
Find
必选项。被搜索的子字符串。
Replacewith
必选项。用于替换的子字符串。
Start
可选项。e­xpression 中开始搜索子字符串的位置。如果省略,默认值为 1。在和count 关联时必须用
count
可选项。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换。在和 start 关联时必须用。
Compare
可选项。指示在计算子字符串时使用的比较类型的数值。如果省略,缺省值为 0 ,这意味着必须进行二进制比较。



问题就在最后一个参数Compare上面。默认是0

0 = vbBinaryCompare 执行二进制比较。
1 =  vbTextCompare 执行文本比较。

结论:我们在replace韩文和日文的时候不能用vbTextCompare文本比较。

重新给出修正好的ubbcode.asp覆盖文件,就可以修正Blog日文出错的问题了

点击下载此文件

 

Leave a Comment

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。