我有一个Edittext来填写搜索字符串:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/search_input_edittext"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:background="@drawable/add_to_cart_btn"
android:text="@string/search"
android:id="@+id/search_search_btn"
android:stateListAnimator="@null"
android:layout_gravity="center_horizontal" />
</LinearLayout>
但是我输入的越南语单词不正确getText().getString()
。它应该是(我手动输入这个)
CU
但我从代码中得到了什么:
EditText search_edittext = (EditText) v_iew.findViewById(R.id.search_input_edittext); //v_iew is from inflating for `AlertDialog`
search_edittext.getText().toString();
如下图所示:
我认为它们的编码方式不同。钩子必须在“u”之上。但是,如果我复制整个单词并粘贴到任何编辑器,它显示完全相同。这就是我在这里粘贴时的样子:
CU
如果我只复制钩子就会发生这种情况
̉
它们看起来一样,但EditText
中的内容不能用于进一步的工作。
如果我从互联网上复制这个词并粘贴到搜索栏中,它就可以了!所以这是导致问题的输入法。试图搜索将它们转换为unicode(带有\ xxxx的那个),但没有运气。
任何人都知道如何将输入转换为“普通格式”?谢谢你的时间!
答案 0 :(得分:1)
如果您在通过API发送正确的格式化文本时遇到问题,只需在HttpClient中设置UTF(假设,它是您正在使用的UTF字体)支持。不要担心Log中显示的内容。自定义字体很容易在日志中呈现错误。
HttpPost post = new HttpPost(url);
StringEntity stringEntity = new StringEntity(payload, "UTF-8");
post.setEntity(stringEntity);
HttpResponse response = httpclient.execute(httppost);
更新:如果只需要对部分网址进行编码,请按以下方式使用,
String url = URLEncoder.encode(params[0], "utf-8");
HttpPost post = new HttpPost(url);
//Rest of the code
答案 1 :(得分:0)
您可以使用: String sNFC = Normalizer.normalize(search_edittext.getText()。toString(),Normalizer.Form.NFC);
答案 2 :(得分:0)
这是我在搜索数小时后找到的唯一解决方案。
String urlParameters = "";//sn=C02G8416DRJM&cn=&locale=&caller=&num=12345
if(parameters != null) {
for (Map.Entry<String, String> entry : parameters.entrySet()) {
String val;
if(!TextUtils.isEmpty(entry.getValue()))
val = URLEncoder.encode(entry.getValue());
else
val = "";
urlParameters += entry.getKey() + "=" + val + "&";
}
}