Java 怎么去掉这些奇怪的字符 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iSNN
V2EX    Java

Java 怎么去掉这些奇怪的字符

  •  
  •   iSNN 2022-12-16 22:50:26 +08:00 2736 次点击
    这是一个创建于 1081 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想请教各位大佬一个问题,百度谷歌都没找到解决方案,可能是我太弱了吧 23333

    有一些奇奇怪怪的字符,显示就是白框
    比如字符串(注意 a 、b 、c 后面都跟了一个东西,v 站可能显示不出来):a b c
    在 sublime 里面显示 a<0x01>b<0x01>c<0x02>
    hex 显示 6101 6201 6302
    拷贝到 idea 字符串就是 String s = "a\u0001b\u0001c\u0002"

    去询问了用户,用户也只是在 word 上或者网页上拷贝一段文字,不是恶意行为。
    想要去掉这些奇奇怪怪的东西...

    不知道大佬们有什么好的方法吗
    10 条回复    2022-12-21 11:55:47 +08:00
    CEBBCAT
        1
    CEBBCAT  
       2022-12-16 22:55:18 +08:00
    iSNN
        2
    iSNN  
    OP
       2022-12-17 09:49:46 +08:00
    @CEBBCAT 连接是 How To Remove a Character from a String in Java ,不是 how to remove non-utf8 character from a string in java 替换这些编码找不到的字符...我只是举个列子 0x01 与 0x02 。还有很多这种乱七八糟的东西...
    tramm
        3
    tramm  
       2022-12-17 09:58:38 +08:00
    charAt 一个一个字符判断 :P
    iSNN
        4
    iSNN  
    OP
       2022-12-17 10:34:58 +08:00
    @tramm 那要怎么判断呢...感觉和上面那位说 replace 的仁兄说了一样的话...现在问题不是不能替换,不是单纯的找不到,而是不知道该找什么内容。我只是举例了 0x01 与 0x02 两个编码,charAt 找到这两个替换当然简单。但是可不只是这两个,后面还有很多这种 0x 字符,这种做法工程实现上不现实吧。只存在理论上可行
    iX8NEGGn
        5
    iX8NEGGn  
       2022-12-17 14:06:09 +08:00 via iPhone
    @iSNN 你举例的看着都属于 C0 或 C1 控制字符,直接把这些替换了,之后可以排出这些控制字符,不允许提交
    myther8888
        6
    myther8888  
       2022-12-17 16:55:24 +08:00
    sublime 用正则替换下
    GBdG6clg2Jy17ua5
        7
    GBdG6clg2Jy17ua5  
       2022-12-17 7:21:45 +08:00
    你在 word 上复制能重现吗?
    rb6221
        8
    rb6221  
       2022-12-17 22:10:28 +08:00
    sublime 和 idea 的文本编码不一样?检查一下
    nieyuanhong
        9
    nieyuanhong  
       2022-12-18 03:28:58 +08:00
    感觉列举的例子有点少,你需要分析 abc 后边的奇怪字符的 ASCII 码,确定这些奇怪字符的码位范围,范围确定后就好办了,直接正则移除掉。当然如果奇怪的字符包括标点符号和英文字母以及汉字的话,就只能从前端找办法了。
    iSNN
        10
    iSNN  
    OP
       2022-12-21 11:55:47 +08:00
    看了下各位的回答,感谢各位大佬。现在的方案只能采用 找到这些奇怪的符号,再用 replace 替换。
    国内的就没找到相关的好的回答,国外倒是给出了许多正则什么的,但是我仔细看了下,试了下。
    这些正则的编码范围只是提取出欧美 字母语言的范围,排除了包括中日韩等文字。
    不过这个方案也不适合我们的场景,比较中英文或者多国语言混杂比较常见。这个正则就十分的复杂了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2359 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 15:46 PVG 23:46 LAX 07:46 JFK 10:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86