-
-
Notifications
You must be signed in to change notification settings - Fork 138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Photon のルーム名に使える文字の調査 #1236
Comments
日本語や韓国語を使うと、どこかのタイミングでその文字数と同じだけ末尾にヌル文字が入るようです。 しかし、 ASCII 限定というわけでもなさそうで、絵文字や |
Linux ではこの問題は発生しませんでした。 |
応急処置として、問題が発生する文字を問題が発生しない文字に置換することで、ユーザ名やルーム名、送信するテキストに日本語を使えるようになります。 namespace detail
{
[[nodiscard]]
static String ToString(const ExitGames::Common::JString& s)
{
auto t = Unicode::FromWstring(std::wstring_view{ s.cstr(), s.length() });
# if SIV3D_PLATFORM(WINDOWS)
for (auto& c : t)
{
// 置換された文字を元に戻す
if ((c & 0xffff0000) == 0x00100000)
{
c &= 0x0000ffff;
}
}
# endif
return t;
}
[[nodiscard]]
static ExitGames::Common::JString ToJString(const StringView s)
{
# if SIV3D_PLATFORM(WINDOWS)
String t{ s };
for (auto& c : t)
{
// 問題が発生する文字を置換する
if ((0x0100 <= c) && (c <= 0xffff))
{
c |= 0x00100000;
}
}
const auto ws = Unicode::ToWstring(t);
# else
const auto ws = Unicode::ToWstring(s);
# endif
return ExitGames::Common::JString{ ws.c_str(), static_cast<unsigned int>(ws.length()) };
}
} |
新しいMultiplayer_Photonの方でこのやり方をそのまま採用しようと思います。 |
The text was updated successfully, but these errors were encountered: