简体   繁体   中英

How to retrieve/print proper Hindi meaning text in Console from a english-hindi.sqlite database

I have downloaded a word meaning Android sqlite.db dictionary file. By fetching SQL query I got

enslishWord="plausible";
hindiMeaning="lR;kHkklh]diViw.kZ]";

By using Hindi Typeface in TextView I got proper Hindi meaning. If I try to print by System.out.println(hindiMeaning); it prints lR;kHkklh]diViw.kZ]

I am confused about the problem and looking for a solution. Please, check the raw Android sqlite.db Github link in comment sections.

add this class

public class typeface extends TypefaceSpan {
    Typeface typeface;

    public typeface(String family, Typeface typeface) {
        super(family);
        this.typeface = typeface;
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setTypeface(typeface);
    }

    @Override
    public void updateMeasureState(TextPaint ds) {
        ds.setTypeface(typeface);
    }

}`

Add this method to you activity

 public SpannableString spannableString(String string, String your_working_hindi_font_name , Context context) {

    SpannableString span = new SpannableString(string);
    span.setSpan(new typeface("", Typeface.createFromAsset(context.getAssets(),
            "" + your_working_hindi_font_name + ".ttf")), 0, span.length(), span.SPAN_EXCLUSIVE_EXCLUSIVE);

    return span;

}
public void spannableToast(SpannableString text, Context context) {
    Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}

call method to show toast

spannableToast(spannableString(normal, "hindi" , getContext()) , getContext());

to set text

 phoneTv.setText( spannableString(normal, "hindi" , getContext()));

If I try to print by System.out.println(hindiMeaning); it prints lR;kHkklh]diViw.kZ].

Are you trying to print the non-English characters in Console?

android.graphics.Typeface is an Android-specific class whereas System.out.println is a Java-specific function. You can't expect the Java console to print out the non-English characters by default.

In Android Studio the default encoding can be set in the studio64.exe.vmoptions file as an ordinary VM parameter. This file is located inside the root folder of your Android Studio installation and contains a set of JVM parameters. Add -Dfile.encoding=UTF-8 there to set encoding in UTF-8.

Alternatively, you can change the option via the settings.

Reference: IntelliJ IDEA incorrect encoding in console output

安卓工作室设置

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM