当使用CSS规则text-transform:uppercase;时,Internet Explorer 9和10不会将德语的“ß”(& szlig;,’sz’)正确更改为“SS”.这根本没有实现,还是我可以通过某种方式处理不能手动替换所有“ß”的错误?
解决方法
这是一个功能. CSS 2.1没有定义大写和小写的含义,IE 9对待U 00DF LATIN SMALL LETTER SHARP S“ß”,因此它的大写映射是U 1E9E LATIN CAPITAL LETTER SHARP S“ẞ”(虽然可以有所不同很难看到).这种情况发生在“标准模式”中;在Quirks Mode中,IE 9将“ß”视为自己的大写映射.
该特征是奇怪的,因为通常的方法是将“ß”映射到“SS”,并且在几年前添加大写的“ẞ”用于在相对较少的情况下可选地使用,其中单词是大写的,以便例如在必须保留施特劳斯和斯特劳斯的名字
CSS 3 Text工作草案规定应根据Unicode应用案例映射,并将“ß”映射到“SS”.如果它将成为推荐,那么该功能将变成一个错误.
通常,在CSS中进行大小写映射是不可靠的.最好在适当的情况下生成内容,如果需要,在服务器端执行映射.然后你可以单独处理任何特殊情况.您也可以使用客户端JavaScript;在JavaScript中,大小写转换具有Unicode感知功能(JavaScript已经很好地全球化的少数领域之一).