new String(str.getBytes("ISO-8859-1"), "UTF-8");
これは、実際には UTF-8 であるのに ISO-8859-1 として誤ってデコードされた文字列を復元しようとしています。
しかし、Web ページについて話しているのであれば、おそらく ISO-8859-1 を持っていないでしょう。おそらく Windows コード ページ 1252 を持っています。これは、ISO-8859-1 に似たエンコーディングですが、バイト範囲 0x80 に異なる文字が含まれています。 –0x9F。ISO-8859-1
上記のコードを に置き換えるとwindows-1252
、サンプル テキストは次のようになります。
किसानों के ल�
これは正しいと思われます(単に切り捨てられました)。
ただし、一般に、誤ってデコードされた文字列を回復しようとすることは避けるべきです。エンコーディングの多くの組み合わせでは、ミスデコーディングにより回復不能なマングリングが発生する可能性があります。最初に正しいエンコーディングを使用して、元のバイトから文字列をデコードする方がはるかに優れています。それをどのように行うかは、どこstr
から来たかによって異なります。