gpt4 book ai didi

java - 在 Struts 2 中启动服务器时,如何在操作类中获取 UTF-8 文本?

转载 作者:行者123 更新时间:2023-12-01 04:47:15 25 4
gpt4 key购买 nike

我正在使用 Hibernate 通过 Struts 2 开发一个 Web 应用程序。

但是我有一个问题,当我启动服务器并加载网站时,我的加载方法将被调用。但是,它无法加载 UTF-8,而不是 "Phương" 我得到 "PH??NG" 但在 JSP 页面中仍然显示 "Phương"。因此,当我执行 SQL 查询时,它是(来自帖子 WHERE 主题,如“%PH??NG PHÁP GIÁO D?C TR?%”,所以我无法查询我的数据库。

我的 Action 类在这里:

public class PostsAction extends ActionSupport {
private List<HomeTopic> homeTopics = new ArrayList<HomeTopic>();
public List<HomeTopic> getHomeTopics() {
return homeTopics;
}

public void setHomeTopics(List<HomeTopic> homeTopics) {
this.homeTopics = homeTopics;
}


public void callHomeTopics(){
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction trans = session.beginTransaction();
String[] list = {"NEW – TIN TỨC TRẺ","Khu Vui Chơi Cho Trẻ","PHƯƠNG PHÁP GIÁO DỤC TRẺ","KỸ NĂNG – KINH NGHIỆM","Phòng Bệnh","Tập Tô Màu"};
for (int i = 0; i < list.length; i++) {
getTopics(session, trans, list[i]);
}
trans.commit();
session.close();
}

public void getTopics(Session session, Transaction trans, String type) {
String hql = "from Posts WHERE topics like '%" + type + "%'";
System.out.println("HQL: " + hql);
Query query = session.createQuery(hql);
query.setMaxResults(3);
List<Posts> t = (ArrayList<Posts>) query.list();
HomeTopic h = new HomeTopic(type, t);
System.out.println("List topics: " + type + " " + t);
homeTopics.add(h);
session.flush();
}

HomeTopics.java 类:

 public class HomeTopic {

private String nameTopic;
private List<Posts> postList;

public List<Posts> getPostList() {
return postList;
}

public void setPostList(List<Posts> postList) {
this.postList = postList;
}

public HomeTopic(String nameTopic, List<Posts> postList) {
this.nameTopic = nameTopic;
this.postList = postList;
}

public HomeTopic() {
}

@Override
public String toString() {
return "HomeTopic{" + "nameTopic=" + nameTopic + ", postList=" + postList + '}';
}

public String getNameTopic() {
return nameTopic;
}

public void setNameTopic(String nameTopic) {
this.nameTopic = nameTopic;
}
}

当我编写 main 方法来测试时,它仍然显示 UTF-8。但是每当我启动服务器并在浏览器中调用 callHomeTopics() 方法时,文本将是 "PH??NG PHÁP GIÁO D?C TR?"

但在JSP页面中仍然显示“Phương Pháp Giáo Dục Trẻ”。除了我的 HQL 查询之外,一切正常。

最佳答案

由于您(我认为是出于测试目的)对您的值进行硬编码,而不是从数据库或网页中读取它们,因此您需要确保用于将它们插入页面中的 IDE 正在运行在 UTF-8 中;

在 Eclipse 中,转到 窗口 -> 首选项 -> 常规 -> 工作区 -> 文本文件编码 -> 其他 -> UTF-8

这也是在打印到控制台时查看正确值所必需的。

当您从 JSP 或数据库读取值时,请注意字符编码,并确保使用

byte[] utf8Bytes = myString.getBytes("UTF-8");

用于编码,并且

String myString = new String(utf8Bytes, "UTF-8")

用于解码。

http://docs.oracle.com/javase/tutorial/i18n/text/string.html

关于java - 在 Struts 2 中启动服务器时,如何在操作类中获取 UTF-8 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com