德语小写ß与大写ẞ的Foldcase转换:编程语言支持情况问询
德语大写ẞ与小写ß的Foldcase跨语言实现情况
2017年德语正字法委员会正式采纳大写ẞ(Unicode U+1E9E)作为小写ß(U+00DF)的可选大写形式,STRASSE与STRAẞE均合法。这一改动本应简化Foldcase比较,但Raku默认.fc方法将ß转为小写ss,而非与ẞ对应。
测试结果
- Raku的
.uc将ß转为SS,.fc同样转为ss,大小写往返转换后与原单词eq返回False,仅.fc结果与大写转小写的ss形式匹配。 - 含ẞ的大写单词测试中,
straße小写与STRAẞE小写相等,但与STRASSE小写不等;.fc结果则与STRASSE小写一致。
默认实现双向Foldcase转换的编程语言
- Python 3.11+:默认的
str.casefold()方法会将ß保留为ß,同时将ẞ转换为ß,实现符合2017年正字法规则的双向Foldcase映射。 - Java 17+:
String.casefold()方法遵循Unicode 14.0及之后的规则,原生支持ß与ẞ的双向Foldcase转换,匹配德语正字法要求。
提供可选支持或依赖第三方库的编程语言
- JavaScript/TypeScript:原生
String.prototype.toLocaleLowerCase('de-DE')在Chrome 104+、Node.js 18+等环境中可将ẞ转为ß,但标准casefold()(ES2021+)仍遵循Unicode默认规则将ß转为ss。可通过自定义正则逻辑或intl-messageformat等第三方库实现完整双向映射。 - C#:.NET 6+中,
String.ToLowerInvariant()仍将ß转为ss,但使用CultureInfo.GetCultureInfo("de-DE").TextInfo.ToLower()可实现ẞ转ß;如需完整双向Foldcase,需依赖Unicode.NET等第三方扩展库。 - Raku:默认
.fc不支持双向转换,但可通过自定义角色(Role)或Unicode::CaseFold等第三方模块,实现符合2017德语正字法的转换逻辑。
补充:Unicode规则与2017德语正字法的冲突
Unicode联盟的默认Foldcase规则中,ß的标准映射为ss;而2017年德语正字法要求ß的大写可选为ẞ,且Foldcase时需保持ß与ẞ的双向对应关系,这导致部分语言的原生实现与德语正字法需求存在差异。
内容的提问来源于stack exchange,提问作者jubilatious1
相关产品推荐
相关产品推荐

