Примечание. Я публикую это как «Вопросы и ответы», так как я не нашел существующего вопроса в SO, который соответствует конкретному сценарию десериализации JSON из паба / подпотока Google Cloud.и сохранение набора символов UTF-8 .У меня есть решение для этого, и я хочу опубликовать ответ, чтобы сделать его доступным для сообщества (см. https://stackoverflow.com/help/self-answer):
Если у вас есть вопрос, на который вы уже знаете ответ, и вы быхотел бы задокументировать эти знания публично, чтобы другие (в том числе и вы) могли найти их позже, вполне нормально задавать и отвечать на свои вопросы на сайте Stack Exchange.
Яполучая JSON от URL-адреса публикации / подписки в Google Cloud, и я знаю, что он использует кодировку UTF-8. Я могу убедиться в этом, изучив ответ, который я получаю, когда отправляю запрос непосредственно на URL-адрес публикации / подписки, используя Fiddler
Я могу десериализовать JSON следующим образом (используя библиотеку Google Gson ):
URL myUrl= new URL("myUrl");
HttpURLConnection connection = (HttpURLConnection) myUrl.openConnection();
MyResponseObject myResponseObject;
try {
myResponseObject = new Gson()
.fromJson(new BufferedReader(new InputStreamReader(connection.getInputStream())), MyResponseObject.class);
}
Когда я проверяю myResponseObject
в Eclipse, некоторые изсимволы в JSON, которые находятся за пределами набора символов ASCII, отображаются неправильно.
Затем, после добавления результирующего набора данных в BigQuery, я вижу такие символы в данных BigQuery на местенекоторых символов, которые не относятся к набору ASCII.
��
'�' - это индикатор, который означает, что кодировка не была правильно обработана и что некоторая кодировка текстабыл потерянКак мне сохранить кодировку?