如何在没有错误捕获的情况下将String转换为UTF-8

时间:2017-02-16 10:44:29

标签: java string utf-8

我需要将String转换为UTF-8。现在我的代码中有这个:

sb.append(URLEncoder.encode(smsAnswerText, "UTF-8"))

但编码方法抛出异常UnsupportedEncodingException

我重写:sb.append(smsAnswerText)因为写this

我错了tуxt-unreadable characters

然后我尝试new String(smsAnswerText.getBytes(),StandardCharsets.UTF_8) 此方法也会抛出异常UnsupportedEncodingException

如何在没有UnsupportedEncodingException的情况下将Sting转换为String + UTF-8?

我需要:

public static String generateBodyResponse(String smsAnswerText){
    return// smsAnswerText in UTF-8
}

我有

public static String generateBodyResponse(String smsAnswerText) throws UnsupportedEncodingException{
        return URLEncoder.encode(smsAnswerText, "UTF-8");
    }

3 个答案:

答案 0 :(得分:0)

我认为任何提供商都不会吞下这个例外。您可以尝试使用的替代方案

<dependency>                               
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.10.0</version>
<scope>compile</scope>
</dependency>

这里@SneakyThrows注释可用。使用此功能您可以避免抛出并抛出关键字

答案 1 :(得分:0)

为什么不尝试缓存块?

     public static String generateBodyResponse(String smsAnswerText) {
String defaultval= "some default value which will be returned if your encod is wrong.";
        try {
            defaultval = URLEncoder.encode(smsAnswerText, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return defaultval;

    }

或做一些像这个函数的包装类:

public class URLEncoderDecorator {
public static String encode(String smsAnswerText) {
    try {
        return URLEncoder.encode(smsAnswerText, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return smsAnswerText;
}

}

然后:

public static String generateBodyResponse(String smsAnswerText) {
    return URLEncoderDecorator.encode(smsAnswerText, "UTF-8");
}

但两种情况都不好,因为这个例外需要了解当编码错误时如何处理它。

,你必须完全明白在这种情况发生时你必须做些什么

答案 2 :(得分:0)

import java.nio.charset.StandardCharsets;
import org.apache.commons.codec.net.URLCodec;

byte[] urlEscape(String s) {
    return new URLCodec().encode(s.getBytes(StandardCharsets.UTF_8));
}