问题
I am using 'Google Input Tools' for Devanagari Input in a Java application.
Following is the scenario where I am typing Devanagari नमस्ते
in one textField, I want to show it's English equivalent namaste
in second textBox. How to do that?

private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
String input = jTextField1.getText();
jTextField2.setText(input); // I need code here to show input in English Encoding.
System.out.println("Input "+input);
}
Output:
Input n
Input na
Input nam
Input nama
Input namas
Input namast
Input namaste
Input नमस्ते
回答1:
Thanks Pawel for that comment . I looked into that library and here's the Helper class which solved my problem!
import com.ibm.icu.text.Transliterator;
/**
* @author Tejas
*/
public class MarathiHelper {
public String devanagariToLatin(String marathiString) {
final String MAR_TO_ENG = "Devanagari-Latin";
//final String DEV_TO_LATIN_NO_ACCENTS = "Devanagari-Latin; nfd; [:nonspacing mark:] remove; nfc";
Transliterator toEnglish = Transliterator.getInstance(MAR_TO_ENG);
String english = toEnglish.transliterate(marathiString);
return english;
}
public String latinToDevanagari(String latinString) {
final String ENG_TO_DEV = "Latin-Devanagari";
Transliterator toMarathi = Transliterator.getInstance(ENG_TO_DEV);
String marathi = toMarathi.transliterate(latinString);
return marathi;
}
public String latinToAscii(String latinString){
final String ENG_TO_DEV = "Latin-ASCII";
Transliterator toMarathi = Transliterator.getInstance(ENG_TO_DEV);
String ascii = toMarathi.transliterate(latinString);
return ascii;
}
public String asciiToLatin(String asciiString){
final String ENG_TO_DEV = "ASCII-Latin";
Transliterator toMarathi = Transliterator.getInstance(ENG_TO_DEV);
String latin = toMarathi.transliterate(asciiString);
return latin;
}
}
来源:https://stackoverflow.com/questions/24751432/how-do-i-encode-devanagari-back-to-english-encoding