我一直在尝试各种Java代码,试图提出一些将对包含引号,空格和“奇异”
Unicode字符的字符串进行编码的东西,并产生与JavaScript的encodeURIComponent函数相同的输出。
我的酷刑测试字符串是: “ A” B±“
如果我在Firebug中输入以下JavaScript语句:
encodeURIComponent('"A" B ± "');
—然后我得到:
"%22A%22%20B%20%C2%B1%20%22"
这是我的小测试Java程序:
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class EncodingTest
{
public static void main(String[] args) throws UnsupportedEncodingException
{
String s = "\"A\" B ± \"";
System.out.println("URLEncoder.encode returns "
+ URLEncoder.encode(s, "UTF-8"));
System.out.println("getBytes returns "
+ new String(s.getBytes("UTF-8"), "ISO-8859-1"));
}
}
—该程序输出:
URLEncoder.encode返回%22A%22 + B +%C2%B1 +%22
getBytes返回“ A” B±“
靠近,但没有雪茄!使用Java编码UTF-8字符串以使其产生与JavaScript相同的输出的最佳方法是什么encodeURIComponent
?
编辑: 我正在使用Java 1.4即将移至Java 5。
查看实现差异,我发现:
MDCencodeURIComponent()
:
[-a-zA-Z0-9._*~'()!]
Java
1.5.0文档URLEncoder
:
[-a-zA-Z0-9._*]
" "
将转换为加号"+"
。因此,基本上,要获得所需的结果,请使用URLEncoder.encode(s, "UTF-8")
然后进行一些后处理:
"+"
与"%20"
"%xx"
代表[~'()!]
其文字对应部分的所有出现问题内容: 在JavaScript中: C#应用程序是否等效?为了转义HTML字符,我使用了: 但是我不确定如何将匹配项转换为JS使用的正确十六进制格式。例如此代码: 返回“ 的,而不是它看起来像我需要了分割字符串为字节或东西。 编辑:这是一个Windows应用程序中,唯一可用的项目有:,,和。 问题答案: 或者是转义旨在成为URL一部分的字符串的正确方法。 以字符串为例: -> -> ->也编码
问题内容: PHP 中JavaScript的功能等同于什么? 问题答案: 尝试。或更确切地说: 此函数的工作方式与定义的完全相同: 转义除以下字符外的所有字符:字母,十进制数字,
假设我们有下面的Jade源码: - var title = 'yay' h1.title #{title} p Just an example 当 compileDebug 选项不是false, Jade 会编译时会把函数里加上 __.lineno = n;, 这个参数会在编译出错时传递给rethrow(), 而这个函数会在Jade初始输出时给出一个有用的错误信息。 function anonym
问题内容: 即使其中一个使用后递增,另一个使用前递增,以下for循环也会产生相同的结果。 这是代码: 对于两个“ for”循环,我得到相同的输出。我想念什么吗? 问题答案: 评估或之后,两种情况下的新值i将相同。增量前和增量后的差异是对表达式本身求值的结果。 递增i并评估为的新值。 计算为的旧值,并递增i。 在for循环中这无关紧要的原因是控制流程大致如下所示: 测试条件 如果为假,则终止 如果是
问题内容: 我正在使用具有Spring安全性的BCryptPasswordEncoder。我的期望是,对于相同的输入,我将始终获得相同的输出。但是对于相同的输入,我得到不同的输出。您可以使用以下代码段对其进行测试: 输出:$ 2a $ 10 $ cYLM.qoXpeAzcZhJ3oXRLu9Slkb61LHyWW5qJ4QKvHEMhaxZ5qCPi 输出2:$ 2a $ 10 $ KEvYX9y
使用Java的hashcode函数可以为不同的字符串提供相同的hashcode吗?或者如果有可能,那么可能性的百分比是多少?