e.body = "data=".concat(encodeURIComponent(decodeURIComponent(w)))) encodeURIComponent 是什么意思
时间: 2024-01-16 07:18:26 浏览: 120
encodeURIComponent()函数是JavaScript中的一个方法,用于将字符串作为URI组件进行编码。它将特殊字符转换为它们的URI编码形式,以便在URL中使用。这样可以确保URL中不会出现无效的字符或引起歧义的字符。
下面是一个示例,演示了如何使用encodeURIComponent()函数对字符串进行编码:
```javascript
var str = "Hello, World!";
var encodedStr = encodeURIComponent(str);
console.log(encodedStr); // 输出:Hello%2C%20World%21
```
在上面的示例中,字符串"Hello, World!"被编码为"Hello%2C%20World%21"。其中,逗号被编码为"%2C",空格被编码为"%20",感叹号被编码为"%21"。
相关问题
axios({ method: 'get', url: '/BookShopSystem_war/getQueryBook/' + bookName@GetMapping("/getQueryBook/{bookName}") @ResponseBody public Map<String, Object> getQueryBook(@PathVariable("bookName") String bookName) { List<Book> queryBookList = bookService.getQueryBook(bookName); HashMap<String, Object> result = new HashMap<>(); result.put("code", 0); result.put("msg", "success"); result.put("data", queryBookList); return result; }<select id="getQueryBook" parameterType="String" resultMap="bookResult"> select * from book where book_name like CONCAT('%',#{bookName},'%') </select>传递的参数会乱码
这段代码使用了Spring Boot框架和MyBatis进行Web开发,前端使用了Axios库发送了一个GET请求,请求的url中包含了查询的书名参数。后端使用了Spring Boot的注解`@GetMapping`和`@PathVariable`来获取参数值,并将参数值传递给MyBatis的mapper进行数据库查询。
如果参数出现了乱码,可以尝试以下解决方法:
1. 确认前后端字符集是否一致,如果不一致则需要对字符集进行统一。
2. 在前端将查询字符串进行编码,使用encodeURIComponent()函数进行编码。后端在接收到查询字符串后,使用decodeURIComponent()函数进行解码。
3. 在Spring Boot的配置文件中指定字符集,例如:
```
spring.datasource.url=jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
```
这样可以确保Spring Boot和数据库之间使用一致的字符集进行数据传输。
4. 在mapper中使用Java内置的URLEncoder类对参数进行编码,例如:
```
select * from book where book_name like CONCAT('%',#{bookName, jdbcType=VARCHAR},'%')
```
在Java代码中,将参数进行编码:
```
String encodedParam = URLEncoder.encode(bookName, "UTF-8");
```
然后将编码后的参数传递给mapper。
以上任何一种方法都可以解决参数乱码的问题。
<select id="getQueryBook" parameterType="String" resultMap="bookResult"> select * from book where book_name like CONCAT('%',#{bookName},'%') </select>mapper中的参数会乱码,如何解决
在MyBatis的mapper中,如果参数值出现乱码,可以尝试以下解决方法:
1. 确认前后端字符集是否一致,如果不一致则需要对字符集进行统一。
2. 在前端将查询字符串进行编码,使用encodeURIComponent()函数进行编码。后端在接收到查询字符串后,使用decodeURIComponent()函数进行解码。
3. 在mapper中使用Java内置的URLEncoder类对参数进行编码,例如:
```
select * from book where book_name like CONCAT('%',#{bookName, jdbcType=VARCHAR},'%')
```
在Java代码中,将参数进行编码:
```
String encodedParam = URLEncoder.encode(bookName, "UTF-8");
```
然后将编码后的参数传递给mapper。
4. 如果以上方法无法解决问题,可以尝试在数据源连接字符串中指定字符集,例如:
```
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
```
这样可以确保MyBatis和数据库之间使用一致的字符集进行数据传输。
阅读全文