Возникла проблема с base64 и кодировками. Тема Base64 часто обсуждалась, но меня интересует следующее:
имеется исходная строка base64, в ней закодирован текст. После раскодировки через System.Encoding.Default.GetString() получается "получитаемая' строка т.е. часть текста корректно восстановилась, а часть заполнена "квадратиками". После этого я в цикле проверяю значения каждого эл-та массива. Часть значений, которые <256, получаются читаемыми, остальная часть (>256, например, 438) получается квадратиками. Пробовал передавать последние символы с кодом >256 через System.Encoding.Unicode.GetString(), но возвращается пустая строка. Как я понял Unicode-символы должны быть в виде \u4410, но у меня есть просто числа...
Здравствуйте, Laserson, Вы писали: L>имеется исходная строка base64, в ней закодирован текст. После раскодировки через System.Encoding.Default.GetString() получается "получитаемая' строка т.е. часть текста корректно восстановилась, а часть заполнена "квадратиками". После этого я в цикле проверяю значения каждого эл-та массива.
Какого именно массива? L> Часть значений, которые <256, получаются читаемыми, остальная часть (>256, например, 438) получается квадратиками.
Что значит "получается квадратиками"? Каким образом смотрим на эти квадратики? L>Пробовал передавать последние символы с кодом >256 через System.Encoding.Unicode.GetString(), но возвращается пустая строка.
Куда передавать? L>Как я понял Unicode-символы должны быть в виде \u4410, но у меня есть просто числа...
Нет. Unicode символы, как и прочие, должны быть в виде символов.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Laserson, Вы писали: L>>имеется исходная строка base64, в ней закодирован текст. После раскодировки через System.Encoding.Default.GetString() получается "получитаемая' строка т.е. часть текста корректно восстановилась, а часть заполнена "квадратиками". После этого я в цикле проверяю значения каждого эл-та массива. S>Какого именно массива? L>> Часть значений, которые <256, получаются читаемыми, остальная часть (>256, например, 438) получается квадратиками. S>Что значит "получается квадратиками"? Каким образом смотрим на эти квадратики? L>>Пробовал передавать последние символы с кодом >256 через System.Encoding.Unicode.GetString(), но возвращается пустая строка. S>Куда передавать? L>>Как я понял Unicode-символы должны быть в виде \u4410, но у меня есть просто числа... S>Нет. Unicode символы, как и прочие, должны быть в виде символов.
a. Массив получается после Convert.FromBase64String(string)
b. Квадратики типа
с. Передавать методу System.Encode.Unicode.GetString(byte[]) как параметр
L>a. Массив получается после Convert.FromBase64String(string)
То есть речь идет о byte[], так? Тогда что именно оказывается "> 256"? L>b. Квадратики типа Где они видны, юный падаван? В отладчике? Или ты выводишь их на экран в ShowMessage? L>с. Передавать методу System.Encode.Unicode.GetString(byte[]) как параметр
Слишком много опечаток. Что именно передается и куда? фрагмент проблемного кода (а не его пересказ) в студию.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Laserson, Вы писали:
L>Строка получается от библиотеки, которая перехватывает все нажатия клавиш в указанном окне. Строка в формате UTF-16LE
Есть подозрение, что либо строка в другом формате, либо неправильно закодирована. "Получитабельность" как раз и намекает на юникод... хм...Попробуйте перебрать все стандартные кодировки из Encoding, то есть Utf7, Utf8, Utf32.
Здравствуйте, Laserson, Вы писали:
L>b. Квадратики типа :)
«Квадратики» — это свойство не символов, а программы-смотрелки. Появиться «квадратики» могут из-за того, что реализация шрифта, назначенного для отображения, не содержит графические изображения для всех символов, определяемых кодировкой. Либо-же программа-смотрелка интерпретирует строку не в той кодировке, в которой она закодирована. Но в этом случае чаще имеем не «квадратики», а «кракозябры» или «вопросики».
Пример: ∰. В моём браузере (Хром) шрифты по умолчанию содержат графическое изображение этого символа. А в ИЕ (при выборе тех же самых семейств шрифтов) интеграла скорее всего видно не будет — «квадратик».
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, Laserson, Вы писали:
L>>b. Квадратики типа
Q>«Квадратики» — это свойство не символов, а программы-смотрелки. Появиться «квадратики» могут из-за того, что реализация шрифта, назначенного для отображения, не содержит графические изображения для всех символов, определяемых кодировкой. Либо-же программа-смотрелка интерпретирует строку не в той кодировке, в которой она закодирована. Но в этом случае чаще имеем не «квадратики», а «кракозябры» или «вопросики».
Q>Пример: ∰. В моём браузере (Хром) шрифты по умолчанию содержат графическое изображение этого символа. А в ИЕ (при выборе тех же самых семейств шрифтов) интеграла скорее всего видно не будет — «квадратик».
Q>На всякий случай советую почитать про Необходимый Минимум знаний о кодировках.
Проблема в том, что я не могу от него избавиться (квадратика). Я вывожу такой текст через RichTextBox, но когда я пробовал удалять последний символ текста (где появлялся квадратик) через myText.Remove(myText.Length — 1, 1), то у меня просто обрезалась последняя видимая буква нормального текста, но этот квадрат оставался. Когда я посмотрел RTF код RichTextBox, то на месте квадратика стоит код \cf1 '08. Про cf1 я понял, а '08 это что такое?