相关疑难解决方法(0)

何时将空间编码为加号(+)或%20?

有时,空格会将URL编码为+符号,有时则会%20.有什么区别,为什么会发生这种情况?

urlencode

451
推荐指数
4
解决办法
22万
查看次数

Java中的HTTP URL地址编码

我的Java独立应用程序从用户获取一个URL(指向一个文件),我需要点击它并下载它.我面临的问题是我无法正确编码HTTP URL地址......

例:

URL:  http://search.barnesandnoble.com/booksearch/first book.pdf

java.net.URLEncoder.encode(url.toString(), "ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)

回报我:

http%3A%2F%2Fsearch.barnesandnoble.com%2Fbooksearch%2Ffirst+book.pdf
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是

http://search.barnesandnoble.com/booksearch/first%20book.pdf
Run Code Online (Sandbox Code Playgroud)

(空间由%20取代)

我猜URLEncoder不是为了编码HTTP URL而设计的... JavaDoc说"用于HTML表单编码的实用程序类"......有没有其他方法可以做到这一点?

java http urlencode

356
推荐指数
14
解决办法
35万
查看次数

如何编码URI参数值?

我想发送一个URI作为查询/矩阵参数的值.在我将它附加到现有URI之前,我需要根据RFC 2396对其进行编码.例如,给定输入:

http://google.com/resource?key=value1 & value2

我期待输出:

http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue1%2520%26%2520value2

java.net.URLEncoder不会也java.net.URI不会产生正确的输出.URLEncoder用于HTML格式编码,与RFC 2396不同.URI没有一次编码单个值的机制,因此无法知道value1和value2是同一个键的一部分.

java rest url urlencode rfc2396

56
推荐指数
3
解决办法
12万
查看次数

使用html在电报机器人上发送粗体和斜体文本

我用电报创建了一个机器人

我想将带有HTML页面的粗体和斜体文本发送到bot

我的HTML代码是:

<html>
<head><title>Telegram</title></head>
<body>
    <form method="GET" action="https://api.telegram.org/bot(token)/sendMessage">
        <input type="hidden" name="chat_id" value="@testadminch">
        <input type="hidden" name="parse_mod" value="markdown">
        <textarea name="text"></textarea>
        <input type="submit" value="Submit">
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我发送*bold*输出应该是粗体但它不起作用

html sendmessage telegram telegram-bot

26
推荐指数
4
解决办法
7万
查看次数

冒号是否需要在URI查询参数中进行编码?

我注意到Java UriBuilder没有编码:查询参数值中包含的字符(ISO 8601格式的字符串).

根据维基百科,似乎冒号应编码.

特别是,对查询字符串进行编码使用以下规则:

  • 字母(AZ和az),数字(0-9)和字符'.',' - ','〜'和'_'保持原样
  • SPACE编码为'+'或%20 [需要引证]
  • 所有其他字符编码为%FF十六进制表示,其中任何非ASCII字符首先编码为UTF-8(或其他指定编码)

那么,这笔交易是什么?查询参数中的冒号是否应该编码?


更新:

我查找了URI语法规范(RFC 3986),看起来像查询参数中的冒号实际上并不是必需的.以下是ABNF对URI的摘录:

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query       = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" / "$" / "&" / "'" …
Run Code Online (Sandbox Code Playgroud)

url uri http urlencode web

19
推荐指数
2
解决办法
1万
查看次数

如何在JSP中对URL进行URL编码?

我想为我的网站创建一个编码的URL.例如,对于此网址:" http://google.com/index.html "

我想通过URL编码将此URL提供给客户端.

html java jsp

17
推荐指数
2
解决办法
4万
查看次数

将字符串解析为URL

如何解析动态字符串值以创建URL实例?我需要用空格%20,重音符号,非ASCII字符替换空格......?

我尝试使用,URLEncoder但它也编码/字符,如果我给URLEncoderURL构造函数编码一个字符串,我得到一个MalformedURLException(没有协议).

java url encoding parsing urlencode

14
推荐指数
2
解决办法
3万
查看次数

Android HttpURLConnection和带有特殊字符的URL

请考虑以下代码(从HTTP请求中检索响应并打印它).注意:此代码适用于标准Java应用程序.在Android应用程序中使用代码时,我只会遇到下面列出的问题.

public class RetrieveHTMLTest {

public static void main(String [] args) {
    getListing(args[0);
}

public static void getListing(String stringURL) {

    HttpURLConnection conn = null;
    String html = "";
    String line = null;
    BufferedReader reader = null;
    URL url = null;

    try {
        url = new URL(stringURL);

        conn = (HttpURLConnection) url.openConnection();

        conn.setConnectTimeout(6000);
        conn.setReadTimeout(6000);
        conn.setRequestMethod("GET");

        reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        conn.connect();

        while ((line = reader.readLine()) != null) {
            html = html + line;
        }

        System.out.println(html);

        reader.close();
        conn.disconnect();
    } catch (Exception ex) { …
Run Code Online (Sandbox Code Playgroud)

java url android httpurlconnection

5
推荐指数
1
解决办法
9356
查看次数

解码UTF问题?

我正在研究我的android项目,我有一个异国情调的问题让我发疯.我正在尝试将字符串转换为Utf-16Utf-8.我使用这段代码来实现它,但它给了我一个带有一些负面成员的数组!

Java代码:

String Tag="???";
String Value="";
try{
            byte[] bytes = Tag.getBytes("UTF-16");
            for(int i=0;i<bytes.length;i++){
            Value=Value+String.valueOf(bytes[i])+",";
        }
Run Code Online (Sandbox Code Playgroud)

数组成员:数组成员是[-1,-2,51,6,-52,6,49,6].我检查了UTF-16的表格.它没有任何负数,我也使用了一个将单词转换为UTF-16M的网站.它给了我"0633 06CC 0631"HEX.如果将此数字更改为十进制,您将看到:"1577 1740 1585".如你所见,这里没有负数!所以我的第一个问题是这些负数是什么?!

为什么我要将单词转换为UTF-8或UTF-16?

我正在做一个项目.这个项目有两个部分.第一部分是一个Android应用程序,它将关键字发送到服务器.这些单词由客户发送.我的客户使用(波斯语,فارسی)字符.第二部分是由C#制作的Web应用程序,它必须响应我的客户.

问题:当我将这些单词发送到服务器时,它会在"????"的流上运行 而不是正确的单词.我已经尝试了很多方法来解决这个问题,但他们无法解决这个问题.之后我决定将utf-16utf-8字符串自己发送到服务器并将其转换为正确的单词.所以我选择了我在帖子顶部描述的方法.

我的原始代码可靠吗?

是的.如果我使用英文字符,它反应非常好.

我的原始代码是什么?

将参数发送到服务器的Java代码:

    protected String doInBackground(String...Urls){
                String Data="";
                HttpURLConnection urlConnection = null; 
                try{
                    URL myUrl=new URL("http://10.0.2.2:80/Urgence/SearchResault.aspx?Tag="+Tag);
                    urlConnection = (HttpURLConnection)myUrl.openConnection();      
                    BufferedReader in = new BufferedReader (new InputStreamReader(urlConnection.getInputStream()));         
                    String temp=""; 
                    // Data is used to …
Run Code Online (Sandbox Code Playgroud)

c# java

5
推荐指数
1
解决办法
271
查看次数