SER_H 2024-03-16 18:23 采纳率: 100%
浏览 4
已结题

(标签-Java|关键词-字符串)

Java:使用map集合添加中文字符串乱码

img

img

img

然后我又重新添加一个字符串,输出确是正常的。很令人费解啊!

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-16 18:23
    关注

    引自免费微信小程序:皆我百晓生

    在Java中,如果你在使用Map集合添加中文字符串时遇到乱码问题,这通常是因为字符串编码不一致导致的。确保你的系统、IDE、数据库连接或任何涉及字符串处理的地方都设置了正确的字符集(UTF-8是最常见的选择)。

    针对你给出的代码片段,假设乱码出现在map.put("msg", "登录成功!欢迎您:"+user.getUsername());这一行,可以按照以下步骤排查:

    1. 确保User对象中的username字段在从数据库获取时以及存储到数据库时都是以UTF-8编码处理的。
    2. 检查控制台输出乱码是否是由于控制台本身的字符编码设置问题。你可以在程序开始时设置系统输出流为UTF-8编码,如下所示:
    import java.io.PrintStream;
    import java.nio.charset.StandardCharsets;
    
    public class YourClass {
        public static void main(String[] args) {
            // 设置System.out为UTF-8编码输出
            PrintStream out = new PrintStream(System.out, true, StandardCharsets.UTF_8);
            System.setOut(out);
    
            // ... 你的代码 ...
        }
    }
    
    1. 如果是在网络传输或者序列化、反序列化过程中出现乱码,则需要检查相关API的编码设置。

    2. 在MyBatis配置文件中确认数据库连接的URL包含了对UTF-8的支持,例如:

      <configuration>
        <environments default="development">
          <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
              <property name="driver" value="com.mysql.jdbc.Driver"/>
              <property name="url" value="jdbc:mysql://localhost:3306/yourdb?useUnicode=true&amp;characterEncoding=UTF-8"/>
              <!-- 其他配置 -->
            </dataSource>
          </environment>
        </environments>
      </configuration>
      

    若上述所有方面都已经正确设置了UTF-8编码,理论上不应该出现乱码问题。请根据实际情况对照并检查每一环节。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月16日

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件