Я експериментував з різними бітами коду Java, намагаючись придумати щось, що буде кодувати рядок, що містить лапки, пробіли та "екзотичні" символи Unicode, і видаватиме результат, ідентичний функції encodeURIComponent JavaScript .
Мій рядок для тестування на катування: "A" B ± "
Якщо я введу в Firebug такий вираз JavaScript:
encodeURIComponent('"A" B ± "');
—Тоді я отримую:
"%22A%22%20B%20%C2%B1%20%22"
Ось моя маленька тестова програма Java:
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class EncodingTest
{
public static void main(String[] args) throws UnsupportedEncodingException
{
String s = "\"A\" B ± \"";
System.out.println("URLEncoder.encode returns "
+ URLEncoder.encode(s, "UTF-8"));
System.out.println("getBytes returns "
+ new String(s.getBytes("UTF-8"), "ISO-8859-1"));
}
}
—Ця програма виводить:
URLEncoder.encode повертає% 22A% 22 + B +% C2% B1 +% 22 getBytes повертає "A" B ± "
Близько, але сигари немає! Який найкращий спосіб кодування рядка UTF-8 за допомогою Java, щоб він видавав ті самі результати, що і JavaScript encodeURIComponent
?
РЕДАКТУВАТИ: Я використовую Java 1.4 незабаром переходячи до Java 5