Java:使用map集合添加中文字符串乱码
然后我又重新添加一个字符串,输出确是正常的。很令人费解啊!
引自免费微信小程序:皆我百晓生
在Java中,如果你在使用Map集合添加中文字符串时遇到乱码问题,这通常是因为字符串编码不一致导致的。确保你的系统、IDE、数据库连接或任何涉及字符串处理的地方都设置了正确的字符集(UTF-8是最常见的选择)。
针对你给出的代码片段,假设乱码出现在map.put("msg", "登录成功!欢迎您:"+user.getUsername());
这一行,可以按照以下步骤排查:
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);
// ... 你的代码 ...
}
}
如果是在网络传输或者序列化、反序列化过程中出现乱码,则需要检查相关API的编码设置。
在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&characterEncoding=UTF-8"/>
<!-- 其他配置 -->
</dataSource>
</environment>
</environments>
</configuration>
若上述所有方面都已经正确设置了UTF-8编码,理论上不应该出现乱码问题。请根据实际情况对照并检查每一环节。