com..media.util;
java.io.;
java.io.;
java.io.;
java.io.;
java.io.;
蒙斯.编解码器..;
班级 {
无效主([]参数){
// 测试编码到图像文件的转换
= "发布图像编码";
//下面使用会把+变成空格,所以在传输图片之前需要先转换一下。
= .(" ", "+");
(, "D:\\.jpg");
//测试图像文件到编码的转换
//.out.(("d:\\.jpg"));
/* ( ) {// 将图像文件转换为字节数组字符串并进行编码
字节[]数据=空;
//读取图像字节数组
尝试 {
in=new();
数据=新字节[in.()];
in.read(数据);
附寄();
} 捕获 (e) {
e.();
// 对字节数组进行编码
=新的();
.(data);//返回编码后的字节数组字符串
}*/
( , ) {//解码字节数组字符串并生成图像
if (== null) //图像数据为空
错误的;
// = 新的();
尝试 {
// 解码
byte[] 字节 = .();// .();
for (int i = 0; i < 字节。; ++i) {
if (bytes[i] < 0) {//调整异常数据
字节[i] += 256;
// 生成jpeg图像
输出=新();
输出.write(字节);
出.flush();
关闭();
真的;
} 捕获 (e) {
错误的;
当URL中包含+、空格、/、?、%、#、&、=等特殊符号时,服务器端可能无法获取到正确的参数值。 我应该怎么办?
解决方案
将这些字符转换为服务器可以识别的字符。 对应关系如下:
URL字符转义
将其替换为其他字符,或使用全角字符。
+ URL中的+号代表空格%2B
URL 中的空格可以是 + 或用 %20 编码
/分隔目录和子目录%2F
? 将实际 URL 和参数分开 %3F
% 指定特殊字符 %25
# 代表书签%23
& URL %26 中指定的参数之间的分隔符
= URL中指定的参数值%3D
URL 中的空格有时会编码为 %20,有时会编码为加号 +。 我一时糊涂了,查了资料才明白了。
URL的基本组成部分包括协议()、域名、端口号、路径和查询字符串(路径参数和锚标记暂时不考虑)。 使用问号? 将路径和查询字符串分开。 例如,路径为index,查询字符串(Query)为param=1。 URL中空格的编码与空格的位置有关:编码为加号+的空格只会出现在查询字符串部分,而编码为%20的空格可以出现在路径和查询字符串中。
造成这种混乱的原因是W3C标准规定,当-Type为/x-www-form-时,URL中的查询参数名和参数值中的空格必须用加号+替换,所以几乎所有浏览器使用此规范提交表单后,URL查询参数中的空格将被编码为加号+。 在另一个规范(RFC 2396,定义 URI)中,URI 中的保留字符需要转义为 %HH 格式(3.4 Query),因此空格将被编码为 %20,并且加号 + 本身也用作保留字 编码为%2B。 对于某些遵循 RFC 2396 标准的应用程序,它可能不接受查询字符串中出现的加号 +,认为它是非法字符。 因此,安全的做法是在 URL 中使用 %20 对空格字符进行编码。
Java 的初衷是将字符串编码为 /x-www-form-MIME 格式的字符串,这意味着它仅适用于 URL 的查询字符串部分,但它经常用于对 URL 的其他部分进行编码。 它的方法将空格编码为加号+。 相应地,它的方法会将加号 + 和 %20 解码为空格。 这种违反直觉的方法导致了我最初遇到的空间 URL 编码问题。 。 所以我后来做的就是,在打电话之后。 对URL进行编码(所有加号+已编码为%2B),然后调用("\\+", "%20")将所有加号+替换为%20。
当URL中包含+、空格、/、?、%、#、&、=等特殊符号时,服务器端可能无法获取到正确的参数值。 我应该怎么办?
解决方案
将这些字符转换为服务器可以识别的字符。 对应关系如下:
URL字符转义
将其替换为其他字符,或使用全角字符。
+ URL中的+号代表空格%2B
URL 中的空格可以是 + 或用 %20 编码
/分隔目录和子目录%2F
? 将实际 URL 和参数分开 %3F
% 指定特殊字符 %25
# 代表书签%23
& URL %26 中指定的参数之间的分隔符
= URL中指定的参数值%3D
URL 中的空格有时会编码为 %20,有时会编码为加号 +。 我一时糊涂了,查了资料才明白了。
URL的基本组成部分包括协议()、域名、端口号、路径和查询字符串(路径参数和锚标记暂时不考虑)。 使用问号? 将路径和查询字符串分开。 例如,路径为index,查询字符串(Query)为param=1。 URL中空格的编码与空格的位置有关:编码为加号+的空格只会出现在查询字符串部分,而编码为%20的空格可以出现在路径和查询字符串中。
造成这种混乱的原因是W3C标准规定,当-Type为/x-www-form-时,URL中的查询参数名和参数值中的空格必须用加号+替换,所以几乎所有浏览器使用此规范提交表单后,URL查询参数中的空格将被编码为加号+。 在另一个规范(RFC 2396,定义 URI)中,URI 中的保留字符需要转义为 %HH 格式(3.4 Query),因此空格将被编码为 %20,并且加号 + 本身也用作保留字 编码为%2B。 对于某些遵循 RFC 2396 标准的应用程序,它可能不接受查询字符串中出现的加号 +,认为它是非法字符。 因此,安全的做法是在 URL 中使用 %20 对空格字符进行编码。
Java 的初衷是将字符串编码为 /x-www-form-MIME 格式的字符串,这意味着它仅适用于 URL 的查询字符串部分,但它经常用于对 URL 的其他部分进行编码。 它的方法将空格编码为加号+。 相应地,它的方法会将加号 + 和 %20 解码为空格。 这种违反直觉的方法导致了我最初遇到的空间 URL 编码问题。 。 所以我后来做的就是,在打电话之后。 对URL进行编码(所有加号+已编码为%2B),然后调用("\\+","%20")将所有加号+替换为%20。