【发布时间】:2019-10-19 02:48:02
【问题描述】:
我正在使用 Java 将数据插入到 MYSQL 表中,一列要求数据中包含 Vertical Tab 符号 (VT)。
我对php代码做了同样的事情,只需写“\v”就很简单了,表格中的数据如下所示:
问题从java不允许“\v”开始,所以我尝试用以下方式对字符进行编码:
byte[] utf8bytes = { (byte)0xE2, (byte)0x90, (byte)0x8B };
Charset utf8charset = Charset.forName("UTF-8");
String string = new String ( utf8bytes, utf8charset );
....
MysqlDataSource DATA_SOURCE = new MysqlDataSource();
PreparedStatement statement = connection.prepareStatement(sql_statement, Statement.RETURN_GENERATED_KEYS);
....
statement.setString(index++, (String) string);
.....
我也尝试为 MysqlDataSource 设置字符集,但在这种情况下它不接受编码字符并且语句失败。
try {
DATA_SOURCE.setCharacterEncoding("UTF-8");
} catch (SQLException ex) {
Logger.getLogger(MyClass.class.getName()).log(Level.SEVERE, null, ex);
}
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect string value: '\xE2\xAD\xBFdat...
希望您能帮助我找到在表格中插入垂直标签的正确方法。
【问题讨论】:
-
E2808B 是“零宽度空间”。
-
?来自于始终不使用 utf8。