Windows10/11で、「切り取り&スケッチ」(切り取り領域とスケッチ)を使ってスクリーンショットを撮り、PNG形式で保存した際、前回使用したファイル形式を覚えてくれず、「ファイル名」に表示される拡張子はPNGだが、「ファイルの種類」としてはJPG形式が選ばれる。
PNGで保存するには、ファイル形式をPNGに変換しなければならず、非常に不便であった。
Windows10/11で、「切り取り&スケッチ」(切り取り領域とスケッチ)を使ってスクリーンショットを撮り、PNG形式で保存した際、前回使用したファイル形式を覚えてくれず、「ファイル名」に表示される拡張子はPNGだが、「ファイルの種類」としてはJPG形式が選ばれる。
PDFを表示すると文字があり、文字としてコピペできるので、文字(を指定する文字コード)が埋め込まれているものだと思っていた。
結論から言うと、どの文字コードでもない、というのが答え。
Google Code Prettifyは、2020年4月22日にメンテされていないのでアーカイブしますというメッセージが残され、更新が止まっている。また、プログラムコードではないことを指すlanguate-noneの設定ができないので、何でもかんでも色付けされてしまうこともあり、Prism.jsを利用することにした。
smartdの起動が失敗している
# /etc/init.d/smartd start
* Starting smartd ...
* start-stop-daemon: failed to start `/usr/sbin/smartd'
* Failed to start smartd
* ERROR: smartd failed to start
これだけでは何が原因かわからず放置していたが、調査することに。
文字コードについて調べていて、Hexダンプのやり方を気をつけないと、表記がビッグエンディアンなのか、リトルエンディアンなのか、わからなくなるのでメモ。
xxd(Vim付属)、hexdump、odあたりのコマンドが使われると思うので、その3つについて。
gVimが対応する文字コードの一覧を見ようと思ったら、cygwinあたりで
iconv -l
で一覧が表示される。実際に入っているDLLとは異なるが、大体はこれで把握できるはず。
$ iconv.exe -l | grep -i "utf\|jis\|jp\|cp932" CP65001 UTF-8 UTF8 UTF-16 UTF16 UTF-16BE UTF16BE UNICODEFFFE UTF-16LE UTF16LE UTF-32 UTF32 UTF-32BE UTF32BE UTF-32LE UTF32LE CP65000 UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7 ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO JIS0201 JISX0201-1976 JISX0201.1976-0 JIS_X0201 X0201 CSHALFWIDTHKATAKANA ISO-IR-87 JIS0208 JISX0208.1983-0 JISX0208.1990-0 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208 ISO-IR-159 JIS0212 JISX0212.1990-0 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990 CP51932 EUC-JP EUCJP EUC_JP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS CP932 WINDOWS-31J ISO-2022-JP ISO2022JP CSISO2022JP ISO-2022-JP-1 ISO-2022-JP-2 CSISO2022JP2 CP50221 ISO-2022-JP-ESC ISO-2022-JP-MS EUC-JIS-2004 EUC-JISX0213 SHIFT_JIS-2004 SHIFT_JISX0213 ISO-2022-JP-2004 ISO-2022-JP-3
参考)UTF-16は、BOMを使ってエンディアンの指定が必要だけど、BOMがない場合はUTF-16BEを暗示するらしい(ウィキペディア)。
また、UTF-16LEとUTF-16BEでは、BOMを付けてはいけないことになっているが、付けた場合はUTF-16のLE/BEの指定付きと同じ符号化になるので、ついていても問題はないのではないかと思ったりする。そのため、おそらく、ファイルの書式(XMLなど)を定める上位のフォーマットで、LE/BEを指定されている場合にはBOMを付けないように、という意味かと思われる。
:set bomb?
BOMをつけるには
:set bomb
BOMを消すには
:set nobomb
:e ++enc=utf-8