Tweet中使用Twitter SDK for Android的奇怪角色

时间:2014-09-02 18:07:17

标签: android twitter character-encoding share tweets

我已经使用" getBytes(" UTF-8");"但仍然没有显示重音,任何建议?,不显示logcat中的任何错误:(

tweet = "Reconoce Ramos al 'Chicharito': Sergio Ramos, defensa del Real Madrid, dijo que Javier Hernández es un jugador importante y recono..."

返回:Reconoce%20Ramos%20al%20%27Chicharito%27%3A%20Sergio%20Ramos%2C%20defensa%20del%20Real%20Madrid%2C%20dijo%20que%20Javier%20Hern%E1ndez%20es%20un%20jugador%20importante%20y%20recono...

signatureBase:POST&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fstatuses%2Fupdate.json&oauth_consumer_key%3DqW5IFxldNY0wSPEw8vTw9Q%26oauth_nonce%3Da7254620cc1a2cb59464a315f27ec464b7909a56%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1409680538%26oauth_token%3D264927564-0sHV9UkcRUurnWKMSXSXkV71WnlY68wkFIKv9zUu%26oauth_version%3D1.0%26status%3DReconoce%2520Ramos%2520al%2520%2527Chicharito%2527%253A%2520Sergio%2520Ramos%252C%2520defensa%2520del%2520Real%2520Madrid%252C%2520dijo%2520que%2520Javier%2520Hern%25E1ndez%2520es%2520un%2520jugador%2520importante%2520y%2520recono...

public String createRequestSignature(String signatureBase, String consumerSecret, String tokenSecret) 
        throws Exception {
        try {
            String keyString    = URIUtil.encode(consumerSecret) + '&' + URIUtil.encode(tokenSecret);
            Debug.i("key " + keyString);
            byte[] keyBytes     = keyString.getBytes("UTF-8");
            SecretKey key       = new SecretKeySpec(keyBytes, MAC_NAME);
            Mac mac             = Mac.getInstance(MAC_NAME);
            mac.init(key);
            byte[] text         = signatureBase.getBytes("UTF-8");
            return Base64.encodeBytes(mac.doFinal(text)).trim();
        } catch (GeneralSecurityException e) {
            throw e;
        } catch (UnsupportedEncodingException e) {
            throw e;
        }
    }

在时间轴上看:Reconoce Ramos al' Chicharito':Sergio Ramos,defensa del Real Madrid,dijo que Javier Hern ndez es un jugador importante y recono ...

public String getQueryString() {
        if (mParams.size() == 0) {
            return "";
        }
        StringBuffer querySb = new StringBuffer();
        int size = mParams.size();
        int i = 0;
        for (String key : mParams.keySet()) {
            HttpValues values = mParams.get(key);
            if (values != null) {
                if (!values.isEmpty()) {
                    TreeSet<String> vals = values.getAll();
                    Iterator<String> iterator = vals.iterator();
                    while (iterator.hasNext()) { 
                        querySb.append(key + "=" + URIUtil.encode((String) iterator.next()));
                        if (iterator.hasNext()) {
                            querySb.append("&");
                        }
                    }
                } else {
                    querySb.append(key + "=");
                }
            } else {
                querySb.append(key + "=");
            }
            if (i != size-1) {
                querySb.append("&");
            }
            i++;
        }

        return querySb.toString();
    }

public static String encode(String input) {
        StringBuilder resultStr = new StringBuilder();
        for (char ch : input.toCharArray()) {
            if (isUnSafe(ch)) {
                resultStr.append('%');
                resultStr.append(toHex(ch / 16));
                resultStr.append(toHex(ch % 16));
            } else {
                resultStr.append(ch);
            }
        }
        return resultStr.toString();
    }

    private static char toHex(int ch) {
        return (char) (ch < 10 ? '0' + ch : 'A' + ch - 10);
    }

    private static boolean isUnSafe(char ch) {
        if (ch > 128 || ch < 0)
            return true;
        return " %*$&+,/:;=?@<>#%'\n".indexOf(ch) >= 0;
    }

0 个答案:

没有答案