zeromake / zeromake.github.io

static-blog

Home Page:https://blog.zeromake.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

zeromake'blog | ipmsg-protocol

zeromake opened this issue · comments

哥们 1:100:shirouzu:jupiter:32:Hello\0 这个字符串是什么编码。是ascall吗,如果有中文怎么办。

@Coober-Ding
哥们 1:100:shirouzu:jupiter:32:Hello\0 这个字符串是什么编码。是ascall吗,如果有中文怎么办。

我看了一下各个开源实现大部分是 utf-8 不过也有不少 gbkshift_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のみで表現可能なエントリや存在しないエントリは省略して
構いません。上記拡張と従来のフィールドが異なる場合、拡張エントリ
を正しいものと解釈します。