Java получает и распечатывает строки в кодировке utf-8JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java получает и распечатывает строки в кодировке utf-8

Сообщение Anonymous »

Я хотел создать чат с поддержкой utf 8, но он не работал только для некоторых конкретных символов utf 8, поэтому, проведя неделю в чистом разочаровании, я сузил вопрос до того, что что-то не так с моим пользовательским вводом обработка, я тоже спросил chatgpt и прочитал бесчисленное количество форумов, но так и не смог понять.
Я использую Windows, я использую vscode, обновленную версию, терминал там использует кодировку utf8, я проверил с помощью chcp - возвращает 65001, то же самое касается cmd, поэтому я не думаю, что это проблема с терминалом, я попробовал перебрать Java System.out в utf-8, это не помогло (System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8));)
У меня нет проблем, когда я предварительно установил строку utf8 и распечатал ее
например :
String random = "háló";
System.out.println(random);
возвращает:
háló
Я пробовал Scanner, BufferedReader, InputStreamReader, конвертировал в байты... я расстроен, пожалуйста, помогите

Код: Выделить всё

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class Main {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in, StandardCharsets.UTF_8)
);
System.out.println("Enter some text (UTF-8 characters supported):");
String userInput = reader.readLine();

// Print the user input to verify
System.out.println("You entered: " + userInput);

// Print UTF-8 byte representation for each character
System.out.println("Character: UTF-8 bytes:");
for (int i = 0; i < userInput.length(); i++) {
char c = userInput.charAt(i);
System.out.print(c + ": ");
byte[] bytes = String.valueOf(c).getBytes(StandardCharsets.UTF_8);
for (byte b : bytes) {
System.out.print((b & 0xFF) + " ");
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
возвращает:
Введите текст (поддерживаются символы UTF-8):
háló
Вы ввели: hl
Символ: UTF-8 байты:
h: 104
: 0
l: 108
: 0
примечание: я начинающий Java-разработчик, пришел из Python

Подробнее здесь: https://stackoverflow.com/questions/786 ... ed-strings
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Windows AllocConsole() не позволяет печатать строки в кодировке UTF-16
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Windows AllocConsole() не позволяет печатать строки в кодировке UTF-16
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с Java/терминалом при получении и распечатке строк в кодировке utf-8
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Desktop.ini в кодировке UTF-16LE, созданный Java, не работает, если он содержит китайские символы.
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Получение фактической длины std::string в кодировке UTF-8?
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»