有关XML,XSL的中文问题,很不一般的!!!!!!!

whiteclude 2001-09-12 03:41:18
我用XSL构造一个表单,有个字段为中文,但是get给一个servlet时发现乱码了,网上的办法用了一堆,没有一个可以解决的

这是xml和xsl的测试例子,
test.xml
<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="modify.xsl"?>
<node>
<id>1</id>
</node>

modify.xsl
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<BODY>
<form name="modify" method="get" action="modify.servlet">
<input type="text" name="value" value="解放军"/><br/>
input type="text" name="name" value="ggggg"/><br/>
<input type="submit" name="submit" value="sumbit" />
</form>
</BODY></HTML></xsl:template>
</xsl:stylesheet>

结果提交出去的表单的value的值不能解析为中文
...全文
174 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilddragon 2001-09-22
  • 打赏
  • 举报
回复
好睡了
wilddragon 2001-09-21
  • 打赏
  • 举报
回复
支持一把
Zee 2001-09-20
  • 打赏
  • 举报
回复
作转换的Js函数:
function revertUTF8(szInput){
var x,wch,wch1,wch2,uch="",szRet="";
for (x=0; x<szInput.length; x++){
if (szInput.charAt(x)=="%") {
wch =parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
if (!wch) {
break;
}
if (!(wch & 0x80)) {
wch = wch;
} else if (!(wch & 0x20)){
x++;
wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
wch = (wch & 0x1F)<< 6;
wch1 = wch1 & 0x3F;
wch = wch + wch1;
} else {
x++;
wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
x++;
wch2 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
wch = (wch & 0x0F)<< 12;
wch1 = (wch1 & 0x3F)<< 6;
wch2 = (wch2 & 0x3F);
wch = wch + wch1 + wch2;
}
szRet += String.fromCharCode(wch);
} else {
szRet += szInput.charAt(x);
}
}
return(szRet);
}

servlet里的类似函数你自己写把。
whiteclude 2001-09-20
  • 打赏
  • 举报
回复
up
whiteclude 2001-09-20
  • 打赏
  • 举报
回复
高手,高手,特意留帖一天,明天一早给分
xmlingo 2001-09-19
  • 打赏
  • 举报
回复
你试一下这一个
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="GB2312" version="1.0"/> <!--xml 输出-->
另外你的xml 及xsl文件编码最好设为一致的GB2312 或者UTF-8


whiteclude 2001-09-19
  • 打赏
  • 举报
回复
那,请问,你怎么把%E8%A7%A3%E6%94%BE%E5%86%9B这个转换为'解放军'呢,有什么办法
Zee 2001-09-19
  • 打赏
  • 举报
回复
从XML/XSL提交上去的Form Data里的Z文都是UTF8 编码的。
你要这么用 的话,怎么改XML都没有用的,还是要在Server Side想办法,UTF8->GB2312的转换程序不是很难找的。
whiteclude 2001-09-19
  • 打赏
  • 举报
回复
还是没有向好的方面发展的反应,依旧是三个%xx标识一个汉字,是谁的错呢
whiteclude 2001-09-17
  • 打赏
  • 举报
回复
"http://www.w3.org/1999/XSL/Transform"模版我早就试过了,但是问题依旧
Zee 2001-09-16
  • 打赏
  • 举报
回复
你提交的表单里的中文是Utf8编码的,要在Server断转换回Gb2312
hydnoahark 2001-09-13
  • 打赏
  • 举报
回复
你应该使用
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
它支持xsl:output,在此元素中指定encoding属性为GB2312试试(我在直接作XML+XSL->HTML)就是这么做的:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="GB2312"/>
whiteclude 2001-09-13
  • 打赏
  • 举报
回复
不行阿,我提交上去的表单的value为value=%E8%A7%A3%E6%94%BE%E5%86%9B
是三个%xx构成一个汉字,但是应该是两个%xx构成一个汉字,servlet那边才可以正确解析
xmlingo 2001-09-13
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!--应添加此句-->
<xsl:output method="html" encoding="UTF-8" version="4.0"/>
<xsl:template match="/">
<HTML>
<BODY>
<form name="modify" method="get" action="modify.servlet">
<input type="text" name="value" value="解放军"/><br/>
input type="text" name="name" value="ggggg"/><br/>
<input type="submit" name="submit" value="sumbit" />
</form>
</BODY></HTML></xsl:template>
</xsl:stylesheet>

8,909

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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