Java 在Scala中将非ascii连字符转换为ascii

Java 在Scala中将非ascii连字符转换为ascii,java,scala,non-ascii-characters,Java,Scala,Non Ascii Characters,在我的Scala web应用程序中,我正在解析通常包含连字符的URL参数。在某些情况下,参数使用非ascii连字符,即 11157‑007‑9120‑9 而不是 11157-007-9120-9 这导致下游系统爆炸 转换这些非ascii字符的最佳方式是什么?还有其他非ascii字符以及连字符…如果只想替换连字符,可以使用replaceAll val strangeHyphen:Char = '\u1234' //replace this with the non-ASCII hy

在我的Scala web应用程序中,我正在解析通常包含连字符的URL参数。在某些情况下,参数使用非ascii连字符,即

11157‑007‑9120‑9
而不是

11157-007-9120-9
这导致下游系统爆炸


转换这些非ascii字符的最佳方式是什么?还有其他非ascii字符以及连字符…

如果只想替换连字符,可以使用replaceAll

val strangeHyphen:Char = '\u1234' //replace this with the non-ASCII hyphen character
val newStr = str.replaceAll(stangeHyphen, '-')

字符串中是否只有连字符?使用
replaceAll()
如果我没有弄错的话,这些字符在URI中是不合法的(因此在URL中),对吗?确保URL是如何编码的,假设存在不匹配,因此您会得到奇怪的字符。。。(例如,URL是UTF,您将其读取为ASCII)我认为这是由用户手动键入参数引起的。(查询参数的编码是否与url不同?)。当我们得到它时,它看起来很好-我们必须使用emacs来查看问题字符,并且它在我们的系统中运行良好-只是下游系统无法处理它…@laura hmm在这种情况下,我认为最简单的解决方案是测试用户是否输入了正确的数据(有效的URL)。换句话说,测试字符串是否为纯ASCII(或某些特殊字符,如果允许),如果不是,则抛出异常/错误