in aliyun-sdk-opensearch/src/main/java/com/aliyun/opensearch/util/URLEncoderRFC1738.java [104:149]
public static String encodeUTF8 (final String s)
{
final StringBuffer sbuf = new StringBuffer();
final char[] sChars = s.toCharArray();
final int len = sChars.length;
for (int i = 0; i < len; i++)
{
final int ch = sChars[i];
if ('A' <= ch && ch <= 'Z')
{ // 'A'..'Z'
sbuf.append((char) ch);
}
else if ('a' <= ch && ch <= 'z')
{ // 'a'..'z'
sbuf.append((char) ch);
}
else if ('0' <= ch && ch <= '9')
{ // '0'..'9'
sbuf.append((char) ch);
}
else if (ch == '-' || ch == '_' // unreserved
|| ch == '.' || ch == '!'
|| ch == '~' || ch == '*'
|| ch == '\'' || ch == '('
|| ch == ')')
{
sbuf.append((char) ch);
}
else if (ch <= 0x007f)
{ // other ASCII
sbuf.append(hex[ch]);
}
else if (ch <= 0x07FF)
{ // non-ASCII <= 0x7FF
sbuf.append(hex[0xc0 | (ch >> 6)]);
sbuf.append(hex[0x80 | (ch & 0x3F)]);
}
else
{ // 0x7FF < ch <= 0xFFFF
sbuf.append(hex[0xe0 | (ch >> 12)]);
sbuf.append(hex[0x80 | ((ch >> 6) & 0x3F)]);
sbuf.append(hex[0x80 | (ch & 0x3F)]);
}
}
return sbuf.toString();
}