【问题标题】:Android Hindi Text Displaying special CharactersAndroid印地语文本显示特殊字符
【发布时间】:2017-02-04 05:51:10
【问题描述】:

我正在制作一个特定语言的应用程序,用户可以在其中从列表中选择语言(印地语或英语)。

当用户选择英语时会发生什么,一切正常,即用户将数据插入数据库,然后在文本字段中正确检索,但是当用户选择印地语并将数据以印地语插入数据库时​​,它会显示文本字段值为“??????”

我想要的是文本字段值必须以印地语显示.. 我为此使用了字体,但这不起作用 这是我的部分代码

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/hindi.ttf");                                        //i have put hindi.ttf file in fonts folder under assets under main
        name.setTypeface(tf);

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (view.getId() == R.id.tvsave) {
                    if (name.getText().toString().length() == 0) {
                        name.setError("Name cannot be empty");
                    } else if (phone.getText().toString().length() == 0) {
                        phone.setError("Phone No. cannot be empty");
                    } 

    else if(!phone.getText().toString().matches(phonePattern)) 
                            phone.setError("Invalid Mobile");
                        } else if (house.getText().toString().length() == 0) {
                            house.setError("House No. cannot be empty");
                        } else if (area.getText().toString().length() == 0) {
                            area.setError("Area cannot be empty");
                        } else if (landmark.getText().toString().length() == 0) {
                            landmark.setError("Landmark cannot be empty");
                        } else if
                                (name.getText().toString().length() == 0 || phone.getText().toString().length() == 0 || house.getText().toString().length() == 0 || area.getText().toString().length() == 0 || landmark.getText().toString().length() == 0) {
                            Toast.makeText(getApplicationContext(), "Please Enter Details",
                                    Toast.LENGTH_LONG).show();
                        } else if (Utils.isNetworkAvailable(AddNewAddress.this)) {
                            new saveaddress().execute(custid, name.getText().toString(), phone.getText().toString(), house.getText().toString(), landmark.getText().toString(), datamodel.getId(), area.getText().toString());                //this is saving data into database
                        } else {
                            final Dialog dialog = new Dialog(AddNewAddress.this);
                            dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);

                            dialog.setContentView(R.layout.internetconnectiondialog);
                            dialog.setTitle(AddNewAddress.this.getResources().getString(R.string.connectionfailed));
                            TextView text = (TextView) dialog.findViewById(R.id.textDialog);
                            text.setText(AddNewAddress.this.getResources().getString(R.string.checkinternetsettings));
                            dialog.show();
                            Button declineButton = (Button) dialog.findViewById(R.id.declineButton);
                            declineButton.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    dialog.dismiss();
                                }
                            });
                        }
                    }
                }
            });
            mySpinner = (Spinner) findViewById(R.id.spncity);
            new spinnercity().execute(language);

        }



class saveaddress extends AsyncTask<String, Void, String> {
        @Override
        protected void onPreExecute() {
            dialogFrag.show(getSupportFragmentManager(), "Dialog");
            dialogFrag.setCancelable(false);
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {
            JSONObject jsonObject;
            try {
                String response = AddNewAddressPostHit.getJSONfromURL(params[0], params[1], params[2], params[3], params[4], params[5], params[6]);

                jsonObject = new JSONObject(response.toString());
                message = jsonObject.getString("Msg");

            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            dialogFrag.dismiss();
            super.onPostExecute(result);
        } 

当用户将数据插入Hindi 语言时,我希望这些text_fields 值必须以Hindi 语言显示,否则English 我为此使用了Typeface,但这不起作用。 尽快告诉我哪里错了。

【问题讨论】:

  • 你能在字段中明确设置印地语文本吗?
  • 我没找到你
  • 而不是来自 db.. 如果你 setText 一些印地文文本。否则可能是其他地方的一些字符集问题
  • 我已经根据从数据库获取的字符串值设置了文本字段中的文本
  • 好的.. 但是如果你硬编码文本字段?

标签: android fonts typeface


【解决方案1】:

尝试在保存到 db 时使用此转换您的字符串数据,并在从 db 中获取这些数据时相同。

String str = (URLDecoder.decode(your_editext_value, "UTF-8"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多