Мое приложение флаттера отправляет строку пользователя в акведук, а в акведуке я использую дартс-сокет для отправки данных на внутренний сервер. В приложении Flutter Mobile я использую http.get с заголовками application / json и использую json.decode для декодирования тела ответа.
var _response = await http.get(Uri.encodeFull("$_socketCon"),
headers: {'Accept': 'application/json'});
if (_response.statusCode == 200) {
var _resBody = await json.decode(_response.body);
В акведуке я использую socket.write и использую String.fromCharCodes (data) для возврата данных из сокета в мобильное приложение.
_socket = await Socket.connect('192.168.22.120', 3000);
_socket.write('$mobileData\r\n');
_reply = new String.fromCharCodes(data);
В мобильном приложении «флаттер» я также использую replaceAll для замены символа, как показано ниже
_socketData = _socketData.replaceAll(new RegExp(r'Ý'), 'I');
_socketData = _socketData.replaceAll(new RegExp(r'ý'), 'i');
_socketData = _socketData.replaceAll(new RegExp(r'Ð'), 'G');
_socketData = _socketData.replaceAll(new RegExp(r'ð'), 'g');
Позже я узнаю, что сервер (сокет) использует некоторое преобразование, как показано ниже. Если мобильное приложение flutter отправляет строку со значением chr (208), сокет сервера заменяется на chr (166).
Данные
sLatin:
string = 'CHR(208)||CHR(220)||CHR(222)||CHR(221)||CHR(214);
sIbm:
string = 'CHR(166)||CHR(154)||CHR(158)||CHR(152)||CHR(153)';
mobil to socket
if cHarf = chr(208) then cHarf := chr(166) // Ğ
else
if cHarf = chr(220) then cHarf := chr(154) // Ü
else
if cHarf = chr(222) then cHarf := chr(158) // Ş
...
...
Мне нужно аналогичное преобразование из флаттера в сокет и из сокета в флаттер.
Как преобразовать латиницу в кодировку Ibm на Dart и Flutter?
Или как использовать подобное преобразование символов в дротике или флаттере?
Обновление:
Я пытаюсь превратить символы в байты, как показано ниже, но не соответствует типу ibm. Ibm char (240) будет преобразован в латинский char (167). Выходные данные даже не совпадают.
List<String> letters = [ 'c', 'ç', 'g', 'ğ', 'ı', 'i', 'o', 'ö', 's', 'ş', 'u', 'ü' ];
for (num i=1; i < 12; i++) {
var bytes = utf8.encode(letters[i].toString());
print(bytes) ;
}
выход:
[195, 167]
[103]
[196, 159]
[196, 177]
[105]
[111]
[195, 182]
[115]
[197, 159]
[117]
[195, 188]
Update-2;
Я также нашел их, но я не уверен, как преобразовать в шестнадцатеричный или UTF8, как показано ниже
Вот некоторые коды символов в шестнадцатеричном формате и как они кодируются в UTF-8:
Ç ç Ğ ğ İ ı Ö ö Ş ş Ü ü
Code: 00c7 00e7 011e 011f 0130 0131 00d6 00f6 015e 015f 00dc 00fc
UTF8: c3 87 c3 a7 c4 9e c4 9f c4 b0 c4 b1 c3 96 c3 b6 c5 9e c5 9f c3 9c c3 bc