Rumah > pembangunan bahagian belakang > Tutorial XML/RSS > 详细解析包含中文字符的URL编码问题

详细解析包含中文字符的URL编码问题

黄舟
Lepaskan: 2017-03-06 16:40:51
asal
1763 orang telah melayarinya

在xml应用中,经常将一些URL信息作为xml数据存储,其中URL参数有可能包含有中文字符。当使用dom对xml数据进行解析时,可以对中文字符进行编码。
但如果只使用xslt来显示xml数据时(data.xml+data.xsl),发现此时的URL会出现编码错误.即使指定编码类型(encoding="gb2312"),依然会出现同样的问题.
测试发现:是IE的缓存机制问题,IE仍会把新的页面(所链接的URL)的MIME内容类型默认为text/xml

解决方法:
1.指定输出文档类型为xml文档  (example:data.xsl)
 

1

<xsl:output method="xml"  encoding="gb2312" media-type="text/xml" />

Salin selepas log masuk

2.在新的窗口打开,给联接增加属性,指明目标窗口为其他窗口 (example:data2.xsl)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

<xsl:attribute name="target">_blank</xsl:attribute>

examples:

/*** data.xml ***/

<!--?xml version="1.0" encoding="gb2312"?-->

<!--?xml-stylesheet type="text/xsl" href="data.xsl"?-->

<root>

 <search>

  <url>http://www.google.com/search?q=</url>

  <word>xml数据</word>

 </search>

 <search>

  <url>http://www1.baidu.com/baidu?word=</url>

  <word>xml数据</word>

 </search>

 <search>

  <url>http://www.google.com/search?q=</url>

  <word>极限编程(xp)</word>

 </search>

 <search>

  <url>http://www1.baidu.com/baidu?word=</url>

  <word>极限编程(xp)</word>

 </search>

</root>

 

/*** data.xsl ***/

<!--?xml version="1.0" encoding="gb2312"?-->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- 去掉下面一句,将出现错误 -->

<xsl:output method="xml"  encoding="gb2312" media-type="text/xml" />

<xsl:template match="/">

 <xsl:apply-templates> 

</xsl:apply-templates></xsl:template>

<xsl:template match="search">

 <xsl:element name="a">

  <xsl:attribute name="href"><xsl:value-of select="url"><xsl:value-of select="word"></xsl:value-of></xsl:value-of></xsl:attribute>

  <xsl:value-of select="word">

 </xsl:value-of></xsl:element>

 <br>

</xsl:template>

</xsl:stylesheet>

 

/*** data2.xsl ***/

<!--?xml version="1.0" encoding="gb2312"?-->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

 <xsl:apply-templates> 

</xsl:apply-templates></xsl:template>

<xsl:template match="search">

 <xsl:element name="a">

  <xsl:attribute name="href"><xsl:value-of select="url"><xsl:value-of select="word"></xsl:value-of></xsl:value-of></xsl:attribute>

  <!-- 去掉下面一句,将出现错误 -->

  <xsl:attribute name="target">_blank</xsl:attribute>

  <xsl:value-of select="word">

 </xsl:value-of></xsl:element>

 <br>

</xsl:template>

</xsl:stylesheet>

Salin selepas log masuk

以上就是详细解析包含中文字符的URL编码问题的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan