iPhoneからTwitterに投稿しようと[ツイート]ボタンを押したら、「問題が発生しました。しばらくしてから、ツイートの送信をやりなおしてください」というエラーメッセージが表示され、どうしても投稿出来ない。時間をおいて送信しても同じ現象。PCから試しても「申し訳ありません、問題が発生しました」になる。
文字数は140文字以内なのに、どこがおかしいのか。なんらかの文字列がフィルターにかかっているとしか思えない。検索しても同じ事例が見つからない。考えられるとすれば、文章の途中にドメイン名を入れていること。URLとしてではなく、サイト名として15バイトのドメイン名「xxxxxxxxxxxx.jp」(実際は実在する名称)を書いたのだが、これが怪しい。
試しに、前後の「」(全角かぎかっこ)を削除し、代わりに半角スペースにしてみたところ、カウンターの文字数が3文字増えた。全角を2文字削除して半角に置き換えたので、本来なら2バイト(日本語1文字)減らないといけないのに、逆の挙動となった。
Twitterの現在の文字数制限は280バイト(日本語140文字)だ。URLは長さにかかわらず23バイト(日本語11.5文字)にカウントされるので、もし「xxxxxxxxxxxx.jp」がURLと認識されたのなら、次のようになる。
(入力画面)
全角記号2バイト+半角英字15バイト+全角記号2バイト=19バイト(日本語9.5文字)(内部処理)
全角記号2バイト+URL23バイト+全角記号2バイト=27バイト(日本語13.5文字)
内部処理で日本語9.5文字のつもりが13.5文字にカウントされ、その結果140文字をオーバーしたら、確かにエラーになってしまう。「」(全角かごかっこ)を半角スペースに置き換え、入力画面の段階からURLとして認識されるようになったと仮定すると、
(入力画面)
半角スペース1バイト+URL23バイト+半角スペース1バイト=25バイト(日本語12.5文字)
日本語9.5文字のつもりが12.5文字に認識されるわけでで、3文字増える。これで辻褄が合う。単語の末尾に「.jp」が付いたからと言ってURLとは限らないはずだが、Twitterはそう認識してしまうのだ。
それなら、エラーメッセージは「文字数が超過しています」にしてほしい。「しばらくしてから、ツイートの送信をやりなおしてください」では、なんの解決にもならない。
日本語140文字以内なのに、投稿がどうしてもエラーになる場合は、文中にドットを含む文字列がないかを確認するとよい。