Вертикальная вкладка в Java и MYSQL - PullRequest
3 голосов
/ 03 июня 2019

Я использую Java для вставки данных в таблицы MYSQL, для одного столбца требуются данные, чтобы в нем была надпись Vertical Tab ( VT ).

Я сделал то же самое с php-кодом иэто довольно просто, просто написав "\ v", данные в таблице выглядят так: enter image description here

Проблема начинается с того, что 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);
.....

Пока это работает, окончательные данные в самой таблице приводят к «?».enter image description here

Я также пытался установить кодировку для 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...

Надеюсь, вы поможете мне найти правильный способ вставки вертикальной вкладки в таблицу.

1 Ответ

0 голосов
/ 03 июня 2019

Я нашел обходной путь.

Я проверил данные, вставленные существующим решением php одной вертикальной вкладки на уровне байтов в таблицу базы данных:

SELECT hex(example_column) FROM `example_table` WHERE 1

Результат: VT from \v

Который мы можем легко воспроизвести, используя приведенный выше пример кода:

byte[] utf8bytes = { (byte)0x0B};
String string = new String ( utf8bytes );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...