为了避免比较ASP经典网站上的字符串的案例冲突,一些继承的代码首先使用UCASE()
转换所有字符串。这似乎适用于各种语言......除了日语。这是日语字符串的简单示例。我已经提供了UrlEncoded值,以便清楚地了解幕后的变化:
Server.UrlEncode("戦艦帝国") = %E6%88%A6%E8%89%A6%E5%B8%9D%E5%9B%BD
UCASE("戦艦帝国") = ƈ�ȉ�Ÿ�ś�
Server.UrlEncode(UCASE("戦艦帝国")) = %C6%88%A6%C8%89%A6%C5%B8%9D%C5%9B%BD
UCASE用这个日语字符串做任何明智的事情吗?或者它的行为有缺陷,未定义或已知与日语不兼容?
(LCASE单独留下样本字符串。但现在我担心将所有比较转换为LCASE,因为我不知道它是否会破坏做与UCASE一起工作的其他非西方语言。 ...)
答案 0 :(得分:2)
https://msdn.microsoft.com/en-us/library/1systdcy(v=vs.84).aspx
只有小写字母转换为大写;所有大写字母和非字母字符保持不变。
https://en.wikipedia.org/wiki/Letter_case
大多数西方语言(特别是那些具有基于拉丁语,西里尔语,希腊语,科普特语和亚美尼亚语字母的书写系统的语言)使用书面形式的信件案例作为清晰度的辅助。使用两个单独案例的脚本也称为两个脚本脚本。许多其他书写系统在majuscules和minuscules之间没有区别 - 一个叫做unicameral script或unicase的系统。
"小写或大写字母"不适用于中日韩语言,因此,UCase()的输出应保持不变。