关键信息 问题标题 - Canonicalizing "%Device;%" changes the meaning of the input string #306 问题描述 - 步骤复现问题: 1. 采用字符串 "%Device%" 2. 使用 Canonicalize 方法进行标准化 3. 对标准化后的字符串进行 EncodeForHTML 或简单显示。问题在于,标准化后的字符串应编码为 HTML 显示为 "%Device%",但实际显示为 "?Device%"。请求版本、操作系统、浏览器等额外信息未提供。 讨论核心 - @xeno6696 表示这是一个无效的使用案例,标准化后的字符串应当用于进一步的验证。应用程序应默认将数据原样存储,并遵循所有用户输入的输出转义策略。 相关代码 - 提供了相关的 JUnit 测试代码,用于复现问题: 解决结论 - 经讨论,问题被确认为 PercentCodec 的免疫列表存在bug。最终文件和编码测试涵盖的API未全面测试,导致了这个合法的问题被识别。