UTF-8 литерал в фактическую символизированную строку - PullRequest
0 голосов
/ 13 января 2020

Я сразу хочу извиниться, так как engli sh не является моим родным языком, поэтому извините, если на самом деле «символизированная строка» или что-то подобное не имеет смысла.

Моя ситуация: я читаю Google, который поддерживается CSV-файл устройства (https://support.google.com/googleplay/answer/1727131?hl=en) с nodejs примерно так:
readFileSync(PATH, 'utf16le').split('\n');

Одна из строк выглядит как Y6 \xe2\x85\xa1 Compact
\xe2\x85\xa1 строковый литерал UTF-8, который фактически обозначает (римская цифра 2) (по крайней мере, в соответствии с этим: https://www.utf8-chartable.de/unicode-utf8-table.pl?start=8448&number=128&utf8=string-literal&text=8545)

Когда я пытаюсь разобраться с этим строковым узлом, auto добавляет \\, делая его \\xe2\\x85\\xa1, поскольку \ x не является допустимым символом и т. д. c.

Но есть ли какой-нибудь способ, которым я мог бы на самом деле получить римскую цифру?

Если нет, то есть ли какие-либо предложения по легкому удалению таких данных полностью (римская цифра более «крутая») чем «должен»)

1 Ответ

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

Как чаще всего бывает, придумал решение в основном через 5 минут после публикации ...

\xe2\x85\xa1
\x заменить на % =>
%e2%85%a1

decodeURIComponent ()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent

Литерал UTF-8 в основном URI, но с % вместо \x
Поэтому мы просто заменим с помощью
string.replace(/\\x/g, '%'); // g, чтобы перехватить все экземпляры в строке
и преобразовать его как URI обратно в правильную строку.

Потратьте более часа, чтобы выяснить это, опубликуйте вопрос и придумать решение за 5 минут ... Что такое даже жизнь ...

...