加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 数据库 > MySql > 正文

java – 从String中删除不适合UTF-8编码的字符

发布时间:2021-01-11 13:10:08 所属栏目:MySql 来源:互联网
导读:我在网站上有一个文本区域,用户可以在其中编写任何内容.当用户复制粘贴某些文本或包含非UTF 8字符的内容并将其提交给服务器时,会出现问题.Java成功处理它,因为它支持UTF-16,但我的mySql表支持UTF-8,因此插入失败.我试图在业务逻辑本身中实现某种方式,删除任何

我在网站上有一个文本区域,用户可以在其中编写任何内容.当用户复制粘贴某些文本或包含非UTF 8字符的内容并将其提交给服务器时,会出现问题.

Java成功处理它,因为它支持UTF-16,但我的mySql表支持UTF-8,因此插入失败.

我试图在业务逻辑本身中实现某种方式,删除任何不适合UTF-8编码的字符.

目前我正在使用此代码:

new String(java.nio.charset.Charset.forName("UTF-8").encode(myString).array());

但它用其他一些不起眼的字符替换不适合UTF-8的字符.这对最终用户来说也不好看.请问有人可以使用Java代码解决任何可能的解决方案吗?

编辑:例如,插入这些值时我得到的异常

java.sql.SQLException: Incorrect string value: 'xF0x9Fx98x8Ax0Dx0A...' for column

java.sql.SQLException: Incorrect string value: 'xF0x9Fx98x80xF0x9F...' for column
最佳答案 UTF-8不是字符集,它是一种字符编码,就像UTF-16一样.

UTF-8能够将任何unicode字符和任何unicode文本编码为字节序列,因此不存在不适合UTF-8的字符.

您正在使用String的构造函数,它只接受一个字节数组(String(byte[] bytes)),根据javadocs:

Constructs a new String by decoding the specified array of bytes using the platform’s default charset.

它使用平台的默认字符集来解释字节(将字节转换为字符).不要使用它.而是在将字节数组转换为String时,使用String(byte[] bytes,Charset charset)构造函数指定要明确使用的编码.

如果您遇到某些字符的问题,那很可能是由于在服务器端和客户端使用不同的字符集或编码(brownser HTML).确保在任何地方都使用UTF-8,不要混合编码,也不要使用平台的默认编码.

一些阅读如何实现这一点:

How to get UTF-8 working in Java webapps?

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读