gpt4 book ai didi

java - ÅØÆ - HTML -> Java -> MySQL -> Java -> HTML 的文本编码出现问题

转载 作者:行者123 更新时间:2023-11-29 09:04:42 27 4
gpt4 key购买 nike

我目前正在开发我的主页,该主页完全由许多 java 类和 MYSQL 数据库支持。

我有一个 HTML 表单,允许查看者输入评论。然后,该文本由 CGI 脚本解析到 java 类,我在其中读取文本:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] data = {in.readLine()};

然后,评论将被解析到数据库中,内容如下:

Connection conn;
forName("com.mysql.jdbc.Driver").newInstance();
//String url = "jdbc:mysql://localhost/pagebuilder";
String url = "jdbc:mysql://localhost/pagebuilder?useUnicode=true&characterEncoding=utf-8";
//String url = "jdbc:mysql://localhost/pagebuilder?characterEncoding=utf-8";
String userName = "username";
String password = "password";
conn = DriverManager.getConnection(url, userName, password);

return conn;
}

public static void closeConnection(Connection conn) throws SQLException {
conn.close();
}

public static void comment(String image, String name, String comment, String email){

Connection conn = null;
try {
conn = Database.getConnection();
}
catch (Exception e) {
e.printStackTrace();
}
if (conn != null) {
try {
java.sql.Timestamp sqlDate = new java.sql.Timestamp(new java.util.Date().getTime());

PreparedStatement pstmt1 = conn.prepareStatement("INSERT INTO comment VALUES(0,?,?,?,?,?)");
pstmt1.setTimestamp(1,sqlDate);
pstmt1.setString(2, image);
pstmt1.setString(3, name);
pstmt1.setString(4, comment);
pstmt1.setString(5, email);

pstmt1.executeUpdate();
conn.close();
}

如果我输入特殊的丹麦语字符,如 æøp 甚至逗号,输出如下:

输入:,æøå

输出:%2C%C3%A6%C3%B8%C3%A5

如何保持输入和输出相同?

我多次尝试将 HTML、Java 连接和数据库设置为 UTF-8,但没有成功。

我能做什么?

最佳答案

您的 CGI 程序正在接收这样编码的文本。

%2C 是逗号的 urlencoded 版本(十六进制为 0x2c,十进制为 32+12 = 44 -- 44 是 ascii 逗号 http://www.asciitable.com/index/asciifull.gif )。

%C3%A6 是 æ 的 UTF-8 编码版本的 urlencoded 版本

%C3%B8是ø的UTF-8编码版本的urlencoded版本

%C3%A5是å的UTF-8编码版本的urlencoded版本

您需要做的是:(a) 将原始 urlencoded 流转换为 urldecoded 流;进而(b) 将您的 urldecoded 流解释为 UTF-8

关于java - ÅØÆ - HTML -> Java -> MySQL -> Java -> HTML 的文本编码出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407256/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com