I try to write a program which will take as an input some text and then the name of the target encoding (ASCII
, UTF-8
, etc.).
Is there any way in Java to write something like this?
String encodedText = String.encode(text, encoding);
Thanks for any suggestions!
CodePudding user response:
You can use the following code to convert from byte[]
to String
with your intended character set.
new String(bytes, StandardCharsets.UTF_8);
or as Andy Turner mentioned in the comments, you can use the getBytes
method of the String
class.
text.getBytes(StandardCharsets.UTF_8)
CodePudding user response:
String decodeText(String input, String encoding) throws IOException {
return
new BufferedReader(
new InputStreamReader(
new ByteArrayInputStream(input.getBytes()),
Charset.forName(encoding)))
.readLine();
}
Should do the trick.
Here is a well written post about how encoding works. I suggest you read through it before implementing this solution. Java-Char-Encoding
CodePudding user response:
If you want to do it for whole files you can make a loop which reads a line from a FileReader and writes it through a FileWriter. Both classes accept charsets to their constructors since java 11.