在 servlet 中 象这样的值 \u9648 \u952e\u56fd 可以直接转成繁体中文,但在JSP中就不行,直接输出\u9648 \u952e\u56fd ,不知怎么转?在

pk3g9a 2003-08-24 01:46:33
1. 在jsp中;
out.print(hyfunc.callMenu(request,0));
在 javabean 中;
String title = rs.getString("title");
.....
return title

这种情况可以显示

2. 在 jsp 中:
String ename = user.getEname_last() + " " + user.getEname_first();
在 javabean 中:
先 在 usermanager.java 中
user.setEname_first(resultset.getString("ename_first"));

再 在 user.java 中;
public String getEname_first()
{
return ename_first;
}

public void setEname_first(String s)
{
ename_first = s;
}

这种得到的值为: \u9648 \u952e\u56fd

不知为什么
...全文
332 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
pk3g9a 2003-08-26
  • 打赏
  • 举报
回复
结贴,原因已经找到,是 写进出的 UTF-8字符串不 \uxxxx等
pokar 2003-08-25
  • 打赏
  • 举报
回复
你这个问题:

1. 数据库里的是 \u9648\u952e\u56fd ,这样的值绝对不对,你用phpmyadmin在utf-8编码下能不能看到值就知道了。

2. 你 写数据到数据库的程序有问题。

~-~ ~-~ ~-~ ~-~
^-^ ^-^ ^-^ ^-^
joesen 2003-08-25
  • 打赏
  • 举报
回复
GZ
jkit 2003-08-25
  • 打赏
  • 举报
回复
试试看:

public static String parseUnicodeString(String uStr) {

final int unicodeLen = 6;

if (uStr == null || uStr.length() % unicodeLen != 0) {
return null;
}

char[] strs = new char[uStr.length() / unicodeLen];

for (int i = 0; i < strs.length; i++) {
strs[i] = (char) Integer.parseInt(uStr.substring(i*unicodeLen + 2, i*unicodeLen + 6), 16);
}

return new String(strs);
}
pk3g9a 2003-08-25
  • 打赏
  • 举报
回复
up
pk3g9a 2003-08-25
  • 打赏
  • 举报
回复
up
pk3g9a 2003-08-25
  • 打赏
  • 举报
回复
谁能给我 写一段 程序 转一下吗?
jkit 2003-08-24
  • 打赏
  • 举报
回复
那就需要自己转码了。将前面的\u去掉,16进制-〉10进制,然后转化成char
将所有的都这么转一次能得到char[] names, 再new String(names).
试试看吧!
pk3g9a 2003-08-24
  • 打赏
  • 举报
回复
请大家帮我顶一下,真的很急,在此谢谢大家。
pk3g9a 2003-08-24
  • 打赏
  • 举报
回复
数据库确对是 这种格式
jkit 2003-08-24
  • 打赏
  • 举报
回复
你的数据库里面一定要保存成\u952e这种格式么?
pk3g9a 2003-08-24
  • 打赏
  • 举报
回复
To: jkit(郁闷之堕落的程序员)

那应该怎么转?
jkit 2003-08-24
  • 打赏
  • 举报
回复
说明resultset.getString("ename_first")就有问题了,正确的应该是输出汉字陈键国,而不是 \u952e\u56fd。
pk3g9a 2003-08-24
  • 打赏
  • 举报
回复
你试试看把resultset.getString("ename_first")的值打出来,然后user.setEname_first(resultset.getString("ename_first"))之后再把user.getEname_firse()的值打出来,看看有没有区别

没有区别,是一样的, \u952e\u56fd

是不是 要转换一下呢?
pk3g9a 2003-08-24
  • 打赏
  • 举报
回复
可能是赋值的时候就有问题了。你看一下resultset.getString("ename_first")是什么。

下面是没问题的!
TestModel a = new TestModel();
a.setUser_id("\u9648\u952e\u56fd");
a.setUser_name("\u9648\u952e\u56fd");
String teststr = a.getUser_id() + " " + a.getUser_name();
out.print(teststr);

赋值的时候,找不出来问题呀,

直接a.setUser_id("\u9648\u952e\u56fd");这样赋值是可以,

但a.setUser_id(resultset.getString("ename_first")) 就不行

真的很厅怪,不知是何原因?

数据库为 VARCHAR 字段,值也为\u9648\u952e\u56fd
pk3g9a 2003-08-24
  • 打赏
  • 举报
回复
up

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧