11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Slack のファイル名がおかしくなるやつを解読する

Last updated at Posted at 2016-12-20

Slack のファイル名がおかしくなる?

  • ある時からアップロードされたファイルをダウンロードすると日本語のファイル名がおかしくなっていたらしい
    • 個人的にはあまりファイルダウンロードしないので気づいていなかったけど、なんか社内で話題になっていたみたいなので調べてみることにした

どういう状況か

例えば オトバンク.txt というファイルが u30aau30c8u30d0u30f3u30af.txt こうなる。ということらしいです。

この時点で PHPer には見覚えがある文字列が並んでいる気がしますね。(や、他の言語でも見れると思うけど)

u**** が続いているという規則性がありますね。これは PHP json_encode した時のと同じじゃないですか!ということでサクッと

<?php
$filename = 'u30aau30c8u30d0u30f3u30af.txt';
echo preg_replace_callback('/(u[0-9a-z]{4})/', function($matches) {
    return json_decode(sprintf('"\\%s"', $matches[1]));
}, $filename);

こういうものを書いてみました。ビンゴ。
(いやしかし雑なコードだなあ。PHP 最高)

これは何か

つまり、ユニコードエスケープされているところから stripslashes かましちゃった感じですね。
再現するなら

<?php

echo stripslashes(json_encode('久々にPHP書いたわ.mp3'));

こんな感じで作れます。意味ないけど。

まとめ

Slack に報告するのはこちらになるのではないでしょうか?
https://slack.com/help/contact

おまけ

ついでだったので、JavaScript ですぐに文字列作れるやつも書いてみました。
http://jsdo.it/riaf/wa5U

11
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?