Java 如何设置servlet以使其支持特殊字符?

Java 如何设置servlet以使其支持特殊字符?,java,servlets,special-characters,urlconnection,Java,Servlets,Special Characters,Urlconnection,在我的程序中,当我的servlet获得参数时,它应该与php建立一个urlConnection,并返回创建的xml。一切都很好,但我的程序似乎不支持特殊字符。我相信关键点是servlet。但是我应该怎么做才能让servlet支持特殊字符呢?例如: String urlString = "XXXXXXX"; URL url= new URL(urlString); URLConnection connection = url.openConnection(); 我希望连接到.php

在我的程序中,当我的servlet获得参数时,它应该与php建立一个urlConnection,并返回创建的xml。一切都很好,但我的程序似乎不支持特殊字符。我相信关键点是servlet。但是我应该怎么做才能让servlet支持特殊字符呢?例如:

String urlString = "XXXXXXX";   
URL url= new URL(urlString);    
URLConnection connection = url.openConnection();
我希望连接到.php的url可以是:

http://XXX.php?name=José&type=artist
但结果显示,url似乎改为:

http://XXX.php?name=Jos&type=artist
它忽略了这个特殊的角色。 我该怎么办?

仅允许在URL中使用:

RFC 3986第2.2节保留字符(2005年1月)
!   *   '   (   )   ;   :   @   &   =   +   $   ,   /   ?   #   [   ]
RFC 3986第2.3节未保留字符(2005年1月)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0   1   2   3   4   5   6   7   8   9   -   _   .   ~   
其他字符必须为空

基本上,您必须对每个请求参数值进行URL编码(实际上还要对参数名称进行URL编码,但由于它们在您的特定情况下显然是硬编码的,并且已经是URL安全的,所以这是不必要的)

请注意,涉及的字符集取决于目标服务器支持的内容。许多传统服务器仍然配置为使用ISO-8859-1。然后,应将上述示例中的“UTF-8”替换为“ISO-8859-1”。如果不确定,请联系服务器管理员。
的URL编码形式为UTF-8
%C3%A9
和ISO-8859-1
%E9

另见:
仅允许在URL中使用:

RFC 3986第2.2节保留字符(2005年1月)
!   *   '   (   )   ;   :   @   &   =   +   $   ,   /   ?   #   [   ]
RFC 3986第2.3节未保留字符(2005年1月)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0   1   2   3   4   5   6   7   8   9   -   _   .   ~   
其他字符必须为空

基本上,您必须对每个请求参数值进行URL编码(实际上还要对参数名称进行URL编码,但由于它们在您的特定情况下显然是硬编码的,并且已经是URL安全的,所以这是不必要的)

请注意,涉及的字符集取决于目标服务器支持的内容。许多传统服务器仍然配置为使用ISO-8859-1。然后,应将上述示例中的“UTF-8”替换为“ISO-8859-1”
。如果不确定,请联系服务器管理员。
的URL编码形式为UTF-8
%C3%A9
和ISO-8859-1
%E9

另见:

我该怎么办:向我们展示你的代码。还有一件事:格式化你的问题,否则没人敢读。编辑。那么我需要编码还是什么呢?我该怎么做:给我们看看你的代码。还有一件事:格式化你的问题,否则没人敢读。编辑。那么我需要编码还是什么呢?我的servlet获取José,然后servlet将其转换为javascript,你知道为什么javascript会创建一个新的html来显示José吗� ? 非常感谢。您在某些时候指定了错误的编码。仔细阅读,了解所有可能出现错误的地方以及如何修复。我的servlet获取José,然后servlet将其转换为javascript,你知道为什么javascript会创建一个新的html显示José吗� ? 非常感谢。您在某些时候指定了错误的编码。仔细阅读,了解所有可能出错的地方以及如何修复。
String name = "José";
String type = "artist";
// ...
String url = String.format("http://XXX.php?name=%s&type=%s", 
    URLEncoder.encode(name, "UTF-8"), 
    URLEncoder.encode(type, "UTF-8"));