为了避免在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的非西方语言出错.)
发布于 2016-10-20 03:13:40
https://msdn.microsoft.com/en-us/library/1systdcy(v=vs.84).aspx
只有小写字母被转换为大写字母;所有大写字母和非字母字符保持不变。
大多数西方语言(特别是那些以拉丁字母、西里尔语、希腊语、科普特字母和亚美尼亚字母为基础的书写系统的语言)使用书面形式的字母大小写来帮助清晰。使用两种不同情况的脚本也称为双体脚本。许多其他的写作系统都不区分大写和小数--一种叫做一元脚本或单酶的系统。
“小写或大写字母”不适用于中日韩两种语言,因此UCase()的输出应该保持不变。
https://stackoverflow.com/questions/40143450
复制相似问题