Я столкнулся с очень странной проблемой, в которой у меня есть байт [], и когда я передаю этот метод Convert.UTF8.GetString (byte []), системная кодировка возиться с моими байтами и заменять лишь несколько специальных байтов (которые я использую как маркеры в моей системе) на три строковых представления символов.C# Encoding.UTF8 испортить байты []
[0] 70 byte
[1] 49 byte
[2] 45 byte
[3] 86 byte
[4] 49 byte
[5] 253 byte <-- Special byte
[6] 70 byte
[7] 49 byte
[8] 45 byte
[9] 86 byte
[10]50 byte
[11]253 byte <-- Special byte
[12]70 byte
[13]49 byte
[14]45 byte
[15]86 byte
[16]51 byte
Когда я проходя выше байт [] в Encoding.UTF8.GetString (байт) Метод Я получаю следующие выходные;
private Encoding _encoding = System.Text.Encoding.GetEncoding("UTF-8", new EncoderReplacementFallback("?"), new DecoderReplacementFallback("?"));
_encoding.GetString(bytes) "F1-V1�F1-V2�F1-V3" string
Фактическое значение не должно быть «», так как это означает, что он не смог закодировать и заменить эти специальные байты с «». В любом случае, я могу обойти это, например, преобразовать в строку и сохранить специальное представление байтов в один символ.
У меня есть следующие специальные байты, которые я пытаюсь использовать в качестве маркеров;
byte AM = (byte) 254
byte VM = (byte) 253
byte SM = (byte) 252
Ваша помощь и комментарии будут оценены.
Спасибо,
-
Sheeraz
Спасибо ... Я должен сделать это вручную, потому что требование состоит в том, чтобы все в кодировке UTF-8, поскольку моя БД - только UTF-8. Я теперь не преобразовываю ничего в String, но только для байтов. – SJunejo
@SJunejo k, но обратите внимание: ваша текущая стратегия ** не UTF-8 **. Ваша база данных будет полностью в пределах своих прав на взрыв в вас. –