码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java中文与Base64互转(解决中文乱码的问题)


    最近线上出现一个问题,前后端交互时,某些情况下,会有中文乱码的问题。

    解决思路:

            1. 在后端先将中文转为 Base64 后再传递到前端(此中文在前端不做显示处理)。

            2. 前端将参数再传递回后端时,后端解析 Base64 得到中文字符串。

    1. package gov.zhbs.utils;
    2. import org.apache.axiom.util.base64.Base64Utils;
    3. import org.apache.commons.lang3.StringUtils;
    4. import org.slf4j.Logger;
    5. import org.slf4j.LoggerFactory;
    6. import java.nio.charset.StandardCharsets;
    7. import java.util.regex.Pattern;
    8. /**
    9. *

    10. *
    11. *

    12. *

    13. * Copyright:.All rights reserved.
    14. *

    15. *

    16. * Company:Zsoft
    17. *

    18. *

    19. * CreateDate: 2022-08-16
    20. *

    21. *
    22. * @author YuGongWen
    23. * @history Mender: YuGongWen;Date: 2022-08-16;
    24. */
    25. public class MyBase64Utils {
    26. private static Logger logger = LoggerFactory.getLogger(MyBase64Utils.class);
    27. /**
    28. * 获取字符串的 Base64 字符串
    29. *
    30. * @param inputStr
    31. * @return
    32. */
    33. public static String getBase64Str(String inputStr) {
    34. if (StringUtils.isBlank(inputStr)) {
    35. return inputStr;
    36. }
    37. String base64Str = Base64Utils.encode(inputStr.getBytes(StandardCharsets.UTF_8));
    38. return base64Str;
    39. }
    40. /**
    41. * 解码 Base64 字符串
    42. *
    43. * @param base64Str
    44. * @return
    45. */
    46. public static String getStrByBase64(String base64Str) {
    47. if (StringUtils.isBlank(base64Str)) {
    48. return base64Str;
    49. }
    50. if (MyBase64Utils.ifBase64Str(base64Str)) {
    51. // nothing to do
    52. } else {
    53. // 非 Base64 格式,不做处理,直接返回
    54. return base64Str;
    55. }
    56. byte[] decode = Base64Utils.decode(base64Str);
    57. return new String(decode, StandardCharsets.UTF_8);
    58. }
    59. /**
    60. * 判断字符串是否为 Base64 格式
    61. *
    62. * @param str
    63. * @return
    64. */
    65. public static boolean ifBase64Str(String str) {
    66. if (StringUtils.isBlank(str)) {
    67. return false;
    68. }
    69. String pattern = "^([A-Za-z0-9+/])*([A-Za-z0-9+/]|[A-Za-z0-9+/]=|[A-Za-z0-9+/])$";
    70. if (Pattern.matches(pattern, str)) {
    71. return true;
    72. } else {
    73. return false;
    74. }
    75. }
    76. }

  • 相关阅读:
    【业务功能篇112】Springboot + Spring Security 权限管理-登录模块开发实战
    redis运维(八)数据类型(一)字符串
    相机图像质量研究(35)常见问题总结:图像处理对成像的影响--运动噪声
    Python字典排序Key不同lambda
    二进制安全虚拟机Protostar靶场(2)基础知识讲解,栈溢出覆盖变量 Stack One,Stack Two
    数据科学中常用的应用统计知识
    第1章_搭建开发环境
    多目标优化问题的研究概述(Matlab代码实现)
    今天的码农女孩做了关于生命周期的笔记以及动态时钟的练习
    详解:整合SSM
  • 原文地址:https://blog.csdn.net/qq_29062045/article/details/126363937
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号