1

Peter ThielのCS183ノートには、ASCII文字列「PeterThielのCS183.pdf」を含むファイル名があります。少なくとも、Windowsエクスプローラーでの出力方法です。ただし、プログラムのデバッグ中に、'文字が単純なアポストロフィではなく、(unsigned char)値が146であり、予想される39ではないことに気付きました。

プログラムのバグかどうかをテストするために、ファイルの名前を変更し、文字を消去して、アポストロフィを再入力しました。案の定、今回は私のプログラムが正しい値を表示しました。したがって、Unicode文字である必要があると推論しました(ASCIIテーブルに表示されないため)。ただし、文字列の次のバイトは「s」であるため、マルチバイト文字ではありません。

誰かがここで何が起こっているのかを説明するのを手伝ってもらえますか?

4

3 に答える 3

2

あなたの間違いは、この文字列がASCIIであると信じていることです。

文字エンコードCP-1252(http://en.wikipedia.org/wiki/Windows-1252を参照)を備えたWindowsマシンを使用している場合、「コード」146は一種の引用です(ウィキペディアの表を参照)。ページ)。

于 2012-07-30T21:04:07.407 に答える
1

これは、WindowsコードページCP1252の正しい一重引用符であり、ASCII(またはISO-8859-1)でもUnicodeでもあ​​りません。

于 2012-07-30T21:02:48.450 に答える
1

一重引用符ではなく、右の一重引用符です。

http://www.ascii-code.com/

あなたが言ったように、39は一重引用符ですが、ファイルは右の一重引用符、Windows Latin-1拡張文字CP-1252の10進数値146を使用して名前を付ける必要があります。

于 2012-07-30T21:00:52.567 に答える