Open zeromake opened 6 years ago
哥们 1:100:shirouzu:jupiter:32:Hello\0 这个字符串是什么编码。是ascall吗,如果有中文怎么办。
@Coober-Ding 哥们 1:100:shirouzu:jupiter:32:Hello\0 这个字符串是什么编码。是ascall吗,如果有中文怎么办。
我看了一下各个开源实现大部分是 utf-8
不过也有不少 gbk
和 shift_jis
的,这大概就是各种飞鸽客户端乱码的原因吧
@Coober-Ding 哥们 1:100:shirouzu:jupiter:32:Hello\0 这个字符串是什么编码。是ascall吗,如果有中文怎么办。
9) 多言語(UTF-8)拡張
ファイル送受信を含むメッセージの送受信で UTF-8 での多言語通信を
行えるホストは、IPMSG_BR_ENTRY/IPMSG_ANS_ENTRY/IPMSG_BR_ABSENCE
コマンドで IPMSG_CAPUTF8OPT を立てたパケットを流すことで、UTF-8
での送受信が可能であることを表明します。お互いが IPMSG_CAPUTF8OPT
をサポートしている場合、IPMSG_UTF8OPT を立てた上で、メッセージ
(ファイル添付メッセージ部分を含む)を UTF-8 で表現したパケットを
送信することができます。
添付ファイルを受信する場合、元の添付メッセージに IPMSG_UTF8OPTが
立っていれば、同じく IPMSG_UTF8OPT を立てた IPMSG_GETFILEDATA
コマンドで添付ファイル転送要求を送ることでファイル名/ディレクトリ
名をUTF-8 で表現したデータを受信することができます。
BR系パケット(IPMSG_BR_ENTRY/IPMSG_BR_EXIT/IPMSG_BR_ABSENCE) につい
ては、IPMSG_UTF8OPT による UTF-8表現は使えません(既存の非UTF-8
クライアントに問題が発生するためです)。そのため、BR系パケットでは
グループ名拡張の末尾に続いて、\0\n の 2バイトを付加(グループ名
拡張を入れない場合、ダミーのグループ名として \0 を挿入した後、
\0\n を続けます。つまり、\0\0\n となります)した後、UTF-8 で以下の
エントリを追加します。
UN:ユーザ名\n
HN:ホスト名\n
NN:ニックネーム\n
GN:グループ名\n
なお、ASCIIのみで表現可能なエントリや存在しないエントリは省略して
構いません。上記拡張と従来のフィールドが異なる場合、拡張エントリ
を正しいものと解釈します。
https://blog.zeromake.com/pages/ipmsg-protocol