我知道这个错误意味着mysql列不接受值,但是这很奇怪,因为值适合于Java 8编码的字符串,而mysql列是utf8_general_ci。此外,到目前为止,除了这些字符之外,所有utf8字符都正常工作。
用例是:我正在导入tweet。有争议的推文是:https://twitter.com/bakervin/status/210054214951518212 --你可以看到两个“奇怪”字符(以及它们之间的两个奇怪的白空间)。问题是-如何处理:
发布于 2012-06-16 05:59:54
这些似乎是unicode代用字符。由于它们不是真正的字符,而且MySQL似乎不支持它们,所以修剪它们是安全的:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char ch = text.charAt(i);
if (!Character.isHighSurrogate(ch) && !Character.isLowSurrogate(ch)) {
sb.append(ch);
}
}
return sb.toString();https://stackoverflow.com/questions/11057463
复制相似问题