Summary. 果たしてこれが何の役に立つのか自分でも疑問ですが(おい)、リプレイファイルの名前に使える文字を調べてみました。うまく使うと順番の整理とかに役立つ・・・かも。
表示可能な文字
まず、大前提として
ゲームの中に用意されていない文字は表示されない
です。というわけで、某Susieでさくっと漁ってみると下のようなデータが見つかります:
どうやらこれが表示可能な文字のすべてみたいです。文字コードに詳しい人なら、この配列にピンと来るところがあると思います(そうでなくても、キーボードの1段目と比較すると雰囲気がわくかも)。
実際はこれ以降に説明するように "文字化け" が生じます。たとえば、小文字のアルファベットは全部大文字に変換されます。そのため、小文字のアルファベットを混ぜることは(基本的に)不可能です。
ASCII文字
いわゆる半角文字(1バイト文字)の場合、半分くらいはそのまま表示されます。それがどの文字で、他の文字はどうなるか、一覧表にしました(オレンジが化ける文字):
| |
2 |
3 |
4 |
5 |
6 |
7 |
| 0 |
SP |
0 |
@ |
P |
` |
p |
| 1 |
! |
1 |
A |
Q |
a |
q |
| 2 |
|
2 |
B |
R |
b |
r |
| 3 |
# |
3 |
C |
S |
c |
s |
| 4 |
$ |
4 |
D |
T |
d |
t |
| 5 |
% |
5 |
E |
U |
e |
u |
| 6 |
& |
6 |
F |
V |
f |
v |
| 7 |
' |
7 |
G |
W |
g |
w |
| 8 |
( |
8 |
H |
X |
h |
x |
| 9 |
) |
9 |
I |
Y |
i |
y |
| A |
|
|
J |
Z |
j |
z |
| B |
+ |
; |
K |
[ |
k |
{ |
| C |
, |
|
L |
|
l |
|
| D |
- |
= |
M |
] |
m |
} |
| E |
. |
|
N |
^ |
n |
~ |
| F |
|
|
O |
_ |
o |
|
"SP" は半角空白。
- 小文字アルファベット → 大文字になる
- [ ] ^ _ ` → それぞれ a ~ f に変わる
- セミコロン → = に変わる
- それ以外は空白に変わる
左にあるほど(同じ列ならより上にあるほど)順番が前になる。
ただし、a~zは大文字にされてから並ぶ(=A~Zの位置)。
同じ空白でも「@」が化けたものはアルファベットの前に来て、
「~」が化けたものはアルファベットの後に来る。
2バイト文字
基本的な処理
自分の知る限りReACTが動作する環境はWindowsのみなので、普通は文字コードとしてシフトJISが使用されているはずです・・・たぶん。
結論から言うと、2バイト文字が含まれていた場合は
1バイトずつバラバラに扱われる
ようです
[1]。もう少し細かく書くと、ファイル名の各バイト毎に
- ASCII文字の範囲外(0x80以降)なら空白。
ただしそれがファイル名の先頭だった場合は完全に無視される
- ASCII文字の範囲内かつ "小文字のアルファベットでない" なら上の通り
- 小文字のアルファベットの場合、小文字のまま表示される
という規則になっています。シフトJISの仕様上、最初の1バイトは必ず空白になってしまいます。また、2バイト目も0x40~0x7Eが使われるので 「
:
」 などはどうやっても使用できません。
例外
実はこれでもまだ不完全で、たとえば全角の「b」(0x8282)は上位も下位も両方とも0x82なのに "空白+a" に化けます。これは自分の予想ですが
全角の小文字アルファベットも大文字に変換してから処理される
のではないかと思います。実際大文字の「B」(0x8261)なら2バイト目がaになります。上にある「aがAになる」が適用されないのは、この2つの処理が同一のものだから「二度掛け」が起こらない・・・てことでしょうか。
まあ、なんでそんな無駄なことをしてるのか謎ですがw(全角文字にも効くtowupperみたいなのを使ったとか)
[1]
文字コードについては、IMEの文字一覧などでご確認ください。
最終更新:2013年08月02日 15:41