XML中特殊字符处理问题

ATHENA112 2007-10-11 02:44:41
50分放了好几天都没人,再加100分。问题描述:

德文"Ü"转换后为Ü 在HTML中正常显示,XML里报错,类似的还有很多。如果不转换那么如引号,连接符号等就会报错,求一简便解决方法,要求不用CDATA。

原帖:http://topic.csdn.net/u/20071007/22/3ea0d3e5-b073-4324-847e-bbe81962ad94.html

解决者结2个给150分。
...全文
3055 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
itymx 2008-07-19
  • 打赏
  • 举报
回复
学习
qiuming0306 2008-07-19
  • 打赏
  • 举报
回复
2进制吧
webwuyee 2008-07-17
  • 打赏
  • 举报
回复
<![CDATA[︶ㄣ壞壞d良]]>
这样的代码,如何入库到xml的字段内呢
入库的时候就报错,提示无效字符
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
支持搂主,收藏
fengwuxie 2007-11-15
  • 打赏
  • 举报
回复
<xsl:text disable-output-escaping="yes"><![CDATA[这里放]]></xsl:text>
Eleve 2007-11-13
  • 打赏
  • 举报
回复
路过。帮顶了
gzdiablo 2007-11-08
  • 打赏
  • 举报
回复
用UTF-8的编码 转换成base64储存在xml里面就行了,不管什么数据都能储存,而且解码的时候也不难
cds27 2007-11-06
  • 打赏
  • 举报
回复
在前提没变的情况下,数据的修改只能是这样最省事了,估计没有更好的办法了。

跨浏览器方面,你可以用JS+DOM+XML,这样可以避免disable-output-escaping的问题,而且读到的数据和disable-output-escaping是一样的。
cds27 2007-10-26
  • 打赏
  • 举报
回复
快吐血了!!!
你完全没看到我在说什么!

再说明一次好了,如果你还是不开窍,那没办法了。

>>德文"Ü"转换后为Ü 在HTML中正常显示,XML里报错,
Ü是HTML里的转义符,知道吗???或者说是HTML可以识别的转义符!
但是!它并不是XML可以识别的转义字符,明白吗?
所以你要怎么做呢?
首先,确定一下目标,就是让HTML能识别,也就是Ü。
但是,同样要让XML不会认为这是个转义符,因为“&....;”的形式是XML转义符的形式,而已经定义的转义符并没有Ü。
所以,你必须将这个形式破解,其实也是一种常见的解决方案,就是不知道为什么你不懂。
即,&变& ,那么Ü变&Uuml;。知道吗?

给你一个XML+XSLT的例子帮助你理解。
xml.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xml.xsl"?>
<root>
&Uuml;
</root>

xml.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:template>
</xsl:stylesheet>
ATHENA112 2007-10-26
  • 打赏
  • 举报
回复
楼上一直都没说怎么“控制输出”我怎么可能理解?说到底是用disable-output-escaping,但是Netscape、Mozilla、Firefox等是不支持的,解决办法只有判断浏览器加JS控制,似乎是有点麻烦了,不过也不失为一个解决办法。求问下还有没有其他更好的解决办法呢?
cds27 2007-10-18
  • 打赏
  • 举报
回复
我现在的字符是Ü
------------
因为Ü不是XML认识的符号,但是又用了XML占用的符号“&”,所以必须用&的转义符号即& 了解否?
所以你要转换的地方就是&变& ,即Ü变&Uuml;
ATHENA112 2007-10-18
  • 打赏
  • 举报
回复
……楼上完全没看懂我问的什么

to hejunbin :
怎么转进数据库的,逆过转回来 ---就是转不回来啊,如果你会请帮我把Ü转成Ü。

或者放入数据库的时候就不要转义德文。。。 --- 这个,为了方便HTML显示是已经转好的了,不是要我全部重新写吧。

还有就算转义, 德文有几个字母啊。。。 --- 开这个帖主要目的是为找个通用的解决办法,希望能解决所有特殊字符,而不是只针对我说的德文,所以开帖才说“类似的还有很多”而不时“其他类似几个”。
hejunbin 2007-10-17
  • 打赏
  • 举报
回复
怎么转进数据库的,逆过转回来。。。

或者放入数据库的时候就不要转义德文。。。

还有就算转义,

德文有几个字母啊。。。

http://zhidao.baidu.com/question/659328.html

只比26个英文多四个啊。。。
ATHENA112 2007-10-16
  • 打赏
  • 举报
回复
楼上的意思是叫我直接写Ü和其他符号,再加上转义,但是,我现在的字符是Ü而不是Ü,也就是说数据库里的是Ü(当然还有很多其他类似的),按楼上的方法我想把它转回来得到的却是空白或乱码……请问怎么解决
hejunbin 2007-10-15
  • 打赏
  • 举报
回复
引号,连接符号类似的可以 转义 !!!!!!!!!!!!!!!!!entity开始我也想到

这些不多的!!!!!!!!!!!!

<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
<!ENTITY copy "©">
<!ENTITY reg "®">
<!ENTITY trade "™">
<!ENTITY mdash "—">
<!ENTITY ldquo "“">
<!ENTITY rdquo "”">
<!ENTITY pound "£">
<!ENTITY yen "¥">
<!ENTITY euro "€">
]>

如果还有别的 你自己再加几个。。。

cds27 2007-10-15
  • 打赏
  • 举报
回复
“&”符号在XML里必须转义使用,写成:&
显示时再加上输出控制即可。

常见的XML转义字符只有少数几个,转换完就可以了。不清楚的话网上搜一下。
ATHENA112 2007-10-14
  • 打赏
  • 举报
回复
……
“如果不转换那么如引号,连接符号等就会报错”
开帖就说了
hejunbin 2007-10-12
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<he>
<junbin>Ü</junbin>
</he>

直接就可以用的,用utf-8编码就是了。。。
hejunbin 2007-10-12
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY Uuml "ü">
]>
<he>
<junbin>Ü</junbin>
</he>
ATHENA112 2007-10-12
  • 打赏
  • 举报
回复
entity开始我也想到了,不过我这里的特殊字符有很多,不止是“Ü”,开帖时就说了。

而且我想要的是个通用的解决方法。
加载更多回复(3)

8,906

社区成员

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

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