Есть ли правильное решение, чтобы получить и сохранить символы хинди, чтобы эти символы отображались на странице jsp? - PullRequest
0 голосов
/ 28 января 2020

Моя операция заключается в том, чтобы сохранить символ хинди в db и извлечь его в другом месте. для начала я пытался это: -

byte[] ob=null;
    String obj="";

    String original11=new String("".getBytes(),Charset.forName("UTF-8"));  
     original11 = "गुणवत्ता"; 
    try {


        System.out.println(original11);
        System.out.println(new String(original11.getBytes()));




              System.out.println(new String(original11.getBytes("windows-1252"), "UTF-8"));

        System.out.println(new String(original11.getBytes(),Charset.forName("UTF-8")));

    byte[] bytearr = original11.getBytes("UTF-8");

     obj = new String(bytearr,Charset.defaultCharset());




    System.out.println("obj "+obj);

    ob=Base64.getEncoder().encode(bytearr);

    String encStr = new String(ob);


    System.out.println(encStr);


    }
    catch(Exception e) {
        e.printStackTrace();
    }

, когда я пытаюсь установить это нормально (без подключения к базе данных), в первый раз я получаю знаки вопроса (??????? ?). и во втором sout я получаю то же самое, и getBytes () возвращает [63, 63, 63, 63, 63, 63, 63, 63].

1 Ответ

1 голос
/ 28 января 2020

Основы.

  • String/Reader/Writer сохраняет текст Unicode, поэтому возможны все сценарии.
  • byte[]/InputStream/OutputStream для двоичных данных. Если на самом деле текст, нужно знать их кодировку / кодировку. UTF_8 - это одна из кодировок Unicode, разрешающая международный текст в байтах. Эта кодировка предназначена для преобразования байтов в или из строки.

  • Строки с жестким кодом должны быть скомпилированы с той же кодировкой, что и редактор. Предполагается, что кодировка редактора может представлять строку. Чтобы проверить, что можно сравнить его с символами, которые экранированы от вас: "\uXXXX\uXXXX".

  • Избегайте new String(bytes) и string.getBytes(), которые используют кодировку платформы по умолчанию, которая не является переносимой.

    String s = new String(bytes, StandardCharsets.UTF_8);
    byte[] bytes = s.getBytes(StandardCharsets.UTF_8);
    

Другие формы, которые следует забыть, и никогда new String(s.getBytes...).

  • Таблица базы данных и таблица столбец должен поддерживать Unicode. См. этот ответ от Соломона Руцкого. Обратите внимание, что использование NVARCHAR с использованием UCS-2 (почти UTF-16) может потребовать 2 NVARCHAR для одного символа Unicode. Сохраняйте зарезервированную длину достаточно большой.

  • JSP могут указывать их кодирование страницы. С помощью accept-charset формы могут указать, что UTF-8 принят. URLEncoder может кодировать параметры в UTF-8 как% ..% ..% ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...