如何在 Dart 中将字符串转换为 utf8?
How can I convert string to utf8 in Dart?
我正在使用 aqueduct web api 框架来支持我的 flutter 应用程序。在我的 api 后端,我需要连接本地网络套接字服务。我的问题是我不能 return 确切的字符串(在 tr 中)。 So,如何在 Dart 中将字符串转换为 utf8?
示例:
@httpGet
Future<Response> getLogin() async {
Socket.connect('192.168.1.22’, 1024).then((socket) async {
socket.listen((data) {
// Expected return is: 1:_:2:_:175997:_:NİYAZİ TOROS
print(new String.fromCharCodes(data).trim());
xResult = new String.fromCharCodes(data).trim();
print("xResult: $xResult");
}, onDone: () {
print("Done");
socket.destroy();
});
socket.write('Q101:_:49785:_:x\r\n');
});
return new Response.ok(xResult);
}
return 不是 TR-tr 语言格式。
Return 文字如下:
1::2::175997:_:NÝYAZÝ TOROS
正确的必须是:
1::2::175997:_:NİYAZİ TOROS
更新:
xResult = new String.fromCharCodes(data).trim();
print(xResult);
responseBody = xResult.transform(utf8.decoder);
print(responseBody);
我可以打印 xResult
但在尝试转换为 UTF8
后无法打印 responseBody
import 'dart:convert' show utf8;
var encoded = utf8.encode('Lorem ipsum dolor sit amet, consetetur...');
var decoded = utf8.decode(encoded);
另见 https://api.dartlang.org/stable/1.24.3/dart-convert/UTF8-constant.html
还有用于流的编码器和解码器
File.openRead().transform(utf8.decoder).
另见 https://www.dartlang.org/articles/libraries/converters-and-codecs#converter
utf8.decode(stringData.runes.toList()),
这可以用来在 flutter 中获取 UTF-8。这里的 stringData 字符串将包含具有 UTF-8 内容的必要数据。
尝试使用utf-8转换
使用此代码
final message = utf8.decode(data);
而不是这个
final message = String.fromCharCodes(data);
进口
import 'dart:convert';
void handleConnection(Socket client) {
print('Connection from'
' ${client.remoteAddress.address}:${client.remotePort}');
// listen for events from the client
client.listen(
// handle data from the client
(Uint8List data) async {
await Future.delayed(Duration(seconds: 1));
final message = utf8.decode(data);
// final message = String.fromCharCodes(data);
int length = messageWidgets.length;
Widget padding2 = Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
flex: 1,
child: GestureDetector(
onLongPress: () {
_copy(message);
},
onDoubleTap: () {
setState(() {
messageWidgets.removeAt(length);
});
},
child: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Color(0xDD44871F),
),
child: Stack(
children: <Widget>[
Column(
// direction: Axis.vertical,
children: [
Text("${client.remoteAddress.host}::-",
style: TextStyle(color: Colors.black87)),
Text("${message}",
style: TextStyle(color: Colors.black87)),
],
)
],
),
)),
),
Expanded(
flex: 1,
child: Container(),
),
],
),
);
setState(() {
messageWidgets.add(padding2);
});
},
// handle errors
onError: (error) {
print(error);
setMwidget(error);
client.close();
},
// handle the client closing the connection
onDone: () {
print('Client left');
client.close();
},
);
}
我正在使用 aqueduct web api 框架来支持我的 flutter 应用程序。在我的 api 后端,我需要连接本地网络套接字服务。我的问题是我不能 return 确切的字符串(在 tr 中)。 So,如何在 Dart 中将字符串转换为 utf8?
示例:
@httpGet
Future<Response> getLogin() async {
Socket.connect('192.168.1.22’, 1024).then((socket) async {
socket.listen((data) {
// Expected return is: 1:_:2:_:175997:_:NİYAZİ TOROS
print(new String.fromCharCodes(data).trim());
xResult = new String.fromCharCodes(data).trim();
print("xResult: $xResult");
}, onDone: () {
print("Done");
socket.destroy();
});
socket.write('Q101:_:49785:_:x\r\n');
});
return new Response.ok(xResult);
}
return 不是 TR-tr 语言格式。
Return 文字如下: 1::2::175997:_:NÝYAZÝ TOROS
正确的必须是: 1::2::175997:_:NİYAZİ TOROS
更新:
xResult = new String.fromCharCodes(data).trim();
print(xResult);
responseBody = xResult.transform(utf8.decoder);
print(responseBody);
我可以打印 xResult
但在尝试转换为 UTF8
responseBody
import 'dart:convert' show utf8;
var encoded = utf8.encode('Lorem ipsum dolor sit amet, consetetur...');
var decoded = utf8.decode(encoded);
另见 https://api.dartlang.org/stable/1.24.3/dart-convert/UTF8-constant.html
还有用于流的编码器和解码器
File.openRead().transform(utf8.decoder).
另见 https://www.dartlang.org/articles/libraries/converters-and-codecs#converter
utf8.decode(stringData.runes.toList()),
这可以用来在 flutter 中获取 UTF-8。这里的 stringData 字符串将包含具有 UTF-8 内容的必要数据。
尝试使用utf-8转换 使用此代码
final message = utf8.decode(data);
而不是这个
final message = String.fromCharCodes(data);
进口
import 'dart:convert';
void handleConnection(Socket client) {
print('Connection from'
' ${client.remoteAddress.address}:${client.remotePort}');
// listen for events from the client
client.listen(
// handle data from the client
(Uint8List data) async {
await Future.delayed(Duration(seconds: 1));
final message = utf8.decode(data);
// final message = String.fromCharCodes(data);
int length = messageWidgets.length;
Widget padding2 = Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
flex: 1,
child: GestureDetector(
onLongPress: () {
_copy(message);
},
onDoubleTap: () {
setState(() {
messageWidgets.removeAt(length);
});
},
child: Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Color(0xDD44871F),
),
child: Stack(
children: <Widget>[
Column(
// direction: Axis.vertical,
children: [
Text("${client.remoteAddress.host}::-",
style: TextStyle(color: Colors.black87)),
Text("${message}",
style: TextStyle(color: Colors.black87)),
],
)
],
),
)),
),
Expanded(
flex: 1,
child: Container(),
),
],
),
);
setState(() {
messageWidgets.add(padding2);
});
},
// handle errors
onError: (error) {
print(error);
setMwidget(error);
client.close();
},
// handle the client closing the connection
onDone: () {
print('Client left');
client.close();
},
);
}