【java】nvarchar,varchar,String

nvarchar=能识别特殊符号的字符串。数据库字段类型
varchar=不能识别特殊符号的字符串。数据库字段类型
String=字符串。java字段类型

现在是varchar对String,有个特殊符号的字符串"�"来了,存进数据库变普通的问号"?",导致我不能用equals对比出他们是相同的。
这个可以通过将varchar改nvarchar解决,但我不想保存特殊符号,不想用nvarchar。
有没有什么方法,能在java代码里(未进数据库前),将所有varchar不能识别的特殊符号变成问号,这就能让我正常equals了

你在入库的时候,可以去掉特殊字符的

public class a {
    public static void main(String[] args) {
        String str = "宧峟巇廱恅慯汮淗滷濪烞燖狚珱蚔蟁袾覬誇譈責跊軛迵鄰鈰鋰鎯鑯祰穬箏粃絭縭陑靨顁餹騤鬴揨擷昖朤卾唗噐坧瓧羘胘妉媕桼楶橬歀鯾鴁鶽黇舊莃蒦薢塶|-/;,_%";
        String str0 = str.replace("宧峟巇廱恅慯汮淗滷濪烞燖狚珱蚔蟁袾覬誇譈責跊軛迵鄰鈰鋰鎯鑯祰穬箏粃絭縭陑靨顁餹騤鬴揨擷昖朤卾唗噐坧瓧羘胘妉媕桼楶橬歀鯾鴁鶽黇舊莃蒦薢塶|-/;,_%", "???????????????????????????????????????????????????????????????????????????");
        System.out.println(str0);
    }}

可不可以这样,提前确定好有哪些类型的特殊字符,替换掉就行

让功能测试员崩溃的字符又来了,6步教你快速搞定特殊字符测试!_二黑-CSDN博客

博主,据我所知,你想在进入数据库之前拦截所有的数据库不能识别的字符这个想法可能不太现实,因为特殊字符很多,可能是因为编码问题也可能是其他问题,这样拦截是不完整的。所以建议你考虑先存入数据库,看是否所有的异常字符都是被数据库转换成“?”,如果是,则查询的时候先替换掉这个字符即可,这种方案更加可行,希望能够帮助到你,如果觉的有帮助,望采纳