如何将字符串转换为 unicode/utf 以传递 url?
How to convert string into unicode/utf for passing in a url?
我的字符串是:
ĐT70, Châu Linh, Tùng Ảnh, Đức Thọ, Hà Tĩnh, Vietnam.
在 url 查询字符串中传递此文本时,它会作为:
ĐT70%2C+Châu+Linh%2C+Tùng+Ảnh%2C+Đức+Thọ%2C+Hà+Tĩnh%2C+Vietnam.
但我想要这种格式:
\U0111\U01b0\U1eddng \U0110\U1eadp, Th\U00f4ng T\U1ef1, T\U00f9ng \U1ea2nh, \U0110\U1ee9c Th\U1ecd, H\U00e0 T\U0129nh, Vietnam.
我怎样才能得到这种格式的字符串?请回答。
经过千辛万苦终于找到了解决办法
//String that you want to convert
String mystring = "133 Phùng Hưng, Cửa Đông, Hoàn Kiếm, Hà Nội, Vietnam";
//unicodeString is the expected output in unicode
String unicodeString = getUnicodeString(escapeUnicodeText(mystring));
//i want to make small u into Capital from unicode String
String resultUnicode = unicodeString.replace("\u", "\U");
try {
String text = URLEncoder.encode(mystring, "UTF-8");
Log.v("currentDateTimeString", "text String:" + text);
} catch (Exception e) {
e.printStackTrace();
}
创建方法 escapeUnicodeText 将您的 Unicode 文本转换为 unicode fromat 例如,如果您在 escapeUnicodeText() 中传递输入字符串 ♫ é,您将获得类似 \u266b \u00e9
的 unicode 输出
public String escapeUnicodeText(String input) {
StringBuilder b = new StringBuilder(input.length());
java.util.Formatter f = new java.util.Formatter(b);
for (char c : input.toCharArray()) {
if (c < 128) {
b.append(c);
} else {
f.format("\u%04x", (int) c);
}
}
return b.toString();
}
将 escapeUnicodeText 的输出传递到 getUnicodeString() 中,您将得到预期的结果,例如 \U0111\U01b0\U1eddng \U0110\U1eadp、Th\U00f4ng T\U1ef1、T\U00f9ng \U1ea2nh, \U0110\U1ee9c Th\U1ecd, H\U00e0 T\U0129nh, 越南.
public String getUnicodeString(String myString) {
String text = "";
try {
byte[] utf8Bytes = myString.getBytes("UTF8");
text = new String(utf8Bytes, "UTF8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return text;
}
我的字符串是:
ĐT70, Châu Linh, Tùng Ảnh, Đức Thọ, Hà Tĩnh, Vietnam.
在 url 查询字符串中传递此文本时,它会作为:
ĐT70%2C+Châu+Linh%2C+Tùng+Ảnh%2C+Đức+Thọ%2C+Hà+Tĩnh%2C+Vietnam.
但我想要这种格式:
\U0111\U01b0\U1eddng \U0110\U1eadp, Th\U00f4ng T\U1ef1, T\U00f9ng \U1ea2nh, \U0110\U1ee9c Th\U1ecd, H\U00e0 T\U0129nh, Vietnam.
我怎样才能得到这种格式的字符串?请回答。
经过千辛万苦终于找到了解决办法
//String that you want to convert
String mystring = "133 Phùng Hưng, Cửa Đông, Hoàn Kiếm, Hà Nội, Vietnam";
//unicodeString is the expected output in unicode
String unicodeString = getUnicodeString(escapeUnicodeText(mystring));
//i want to make small u into Capital from unicode String
String resultUnicode = unicodeString.replace("\u", "\U");
try {
String text = URLEncoder.encode(mystring, "UTF-8");
Log.v("currentDateTimeString", "text String:" + text);
} catch (Exception e) {
e.printStackTrace();
}
创建方法 escapeUnicodeText 将您的 Unicode 文本转换为 unicode fromat 例如,如果您在 escapeUnicodeText() 中传递输入字符串 ♫ é,您将获得类似 \u266b \u00e9
的 unicode 输出public String escapeUnicodeText(String input) {
StringBuilder b = new StringBuilder(input.length());
java.util.Formatter f = new java.util.Formatter(b);
for (char c : input.toCharArray()) {
if (c < 128) {
b.append(c);
} else {
f.format("\u%04x", (int) c);
}
}
return b.toString();
}
将 escapeUnicodeText 的输出传递到 getUnicodeString() 中,您将得到预期的结果,例如 \U0111\U01b0\U1eddng \U0110\U1eadp、Th\U00f4ng T\U1ef1、T\U00f9ng \U1ea2nh, \U0110\U1ee9c Th\U1ecd, H\U00e0 T\U0129nh, 越南.
public String getUnicodeString(String myString) {
String text = "";
try {
byte[] utf8Bytes = myString.getBytes("UTF8");
text = new String(utf8Bytes, "UTF8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return text;
}