目次
不同编码的BOM表示

About字符编码

Jun 06, 2016 pm 08:12 PM
キャラクター 開ける プログラム コーディング ノート

打开"记事本"程序Notepad.exe,新建一个文本文件,内容就是一个"严"字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。 然后,用文本编辑软件UltraEdit中的"十六进制功能",观察该文件的内部编码方式。 1)ANSI:文件的编码就是两个字节

打开"记事本"程序Notepad.exe,新建一个文本文件,内容就是一个"严"字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。

然后,用文本编辑软件UltraEdit中的"十六进制功能",观察该文件的内部编码方式。

1)ANSI:文件的编码就是两个字节"D1 CF",这正是"严"的GB2312编码,这也暗示GB2312是采用大头方式存储的。

2)Unicode:编码是四个字节"FF FE 25 4E",其中"FF FE"表明是小头方式存储,真正的编码是4E25。

3)Unicode big endian:编码是四个字节"FE FF 4E 25",其中"FE FF"表明是大头方式存储。

4)UTF-8:编码是六个字节"EF BB BF E4 B8 A5",前三个字节"EF BB BF"表示这是UTF-8编码,后三个"E4B8A5"就是"严"的具体编码,它的存储顺序与编码顺序是一致的。

UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。

PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。

由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。

解决的办法嘛,如果只包含英文字符(或者说ASCII编码内的字符),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。

当然在Python程序中处理的时候遇到这种情况改怎么处理呢?

方法一:直接将源文件的格式修改一下,将其保存为UTF-8即可,但是很多时候传过来的源文件是没法修改的,这样就行不通了。

方法二:替换,就是将其中的\xef\xbb\xbf替换为空就可以了。

VIM 十六进制和文本模式切换

使用vim打开文件后,使用命令

:%!xxd 使用十六进制显示;
:%!xxd -r 返回文本显示。
ログイン後にコピー

只有十六进制部分的修改才会被采用。右边可打印文本部分的修改忽略不计。

vim以二进制打开文件

vim -b binfile
ログイン後にコピー

在 Vim 中将文件保为无 BOM 的 UTF-8 格式

查看文件格式

通常我们需要先查看文件格式是否与预期的一样,再根据结果决定是否需要修改(当然你也可以在不知道原格式的情况下直接修改),下面分别给出了查看文件编码和是否带有 BOM 的命令。

# 查看文件编码。
set fenc?
# 查看是否带 BOM。
set bomb?
ログイン後にコピー

修改文件格式

# 设置为 UTF-8 编码。
set fenc=utf-8
# 设置为无 BOM,如需设置为带 BOM 则使用 "set bomb"。
set nobomb
# 加上BOM标记
set bomb
ログイン後にコピー

使用linux命令删除UTF-8编码中的BOM

shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q'
or
shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//g'
or
shell> tail -c +4 old_file > new_file
ログイン後にコピー

如果使用SVN提交代码的话,可以在pre-commit钩子里加上相关代码用以杜绝BOM。

#!/bin/bash
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
for FILE in $($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}'); do
    if $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | grep -q $'^\xEF\xBB\xBF'; then
        echo "Byte Order Mark be found in $FILE" 1>&2
        exit 1
    fi
done
ログイン後にコピー

不含 BOM 的 UTF-8 才是标准形式!
带 BOM 的 UTF-8 就是赤裸裸的流氓!!!

不同编码的BOM表示

编码 十六进制表示
UTF-8 EF BB BF
UTF-16-BE FE FF
UTF-16-LE FF FE
UTF-32-BE 00 00 FE FF
UTF-32-LE FF FE 00 00
UTF-7 2B 2F 76和以下的一个字节:[ 38 39 2B 2F ]
en:UTF-1 F7 64 4C
en:UTF-EBCIC DD 73 66 73
en:Standard Compression Scheme for Unicode 0E FE FF
en:BOCU-1 FB EE 28及可能跟随着FF
GB-18030 84 31 95 33

vim 将文件从dos格式转换到unix格式

:set fileformat=unix
:w
ログイン後にコピー

VIM 状态栏显示 文件格式带bom
Show fileencoding and bomb in the status line

http://vim.wikia.com/wiki/Show_fileencoding_and_bomb_in_the_status_line

比如 [latin1], [iso-8859-15], [utf-8,B], etc.

if has("statusline")
 set statusline=%
<p>其实有用的就是这段:</p>
<pre class="brush:php;toolbar:false">
%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"}
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

GoogleマップをiPhoneのデフォルト地図にする方法 GoogleマップをiPhoneのデフォルト地図にする方法 Apr 17, 2024 pm 07:34 PM

iPhone のデフォルトの地図は、Apple 独自の地理位置情報プロバイダーである Maps です。マップは改善されていますが、米国外ではうまく機能しません。 Googleマップと比べて何も提供するものはありません。この記事では、Google マップを iPhone のデフォルトの地図として使用するための実行可能な手順について説明します。 Google マップを iPhone のデフォルトの地図にする方法 Google マップを携帯電話のデフォルトの地図アプリとして設定するのは、思っているよりも簡単です。以下の手順に従ってください – 前提条件 – 携帯電話に Gmail がインストールされている必要があります。ステップ 1 – AppStore を開きます。ステップ 2 – 「Gmail」を検索します。ステップ 3 – Gmail アプリの横にある をクリックします

携帯電話でisoファイルを開く方法 携帯電話でisoファイルを開く方法 Feb 24, 2024 pm 05:33 PM

テクノロジーの発展に伴い、ISO ファイルを使用する人が増えています。 ISO ファイルは、通常、オペレーティング システム、ソフトウェア、ゲームなどを含むディスクのすべてのコンテンツを含むディスク ファイルの形式です。コンピュータ上で ISO ファイルを開くのは比較的簡単で、仮想光学ドライブ ソフトウェアを使用するだけです。ただし、携帯電話で ISO ファイルを開きたい場合は、さらに面倒になる可能性があります。さて、この記事では、携帯電話でISOファイルを簡単に開くためのいくつかの方法を紹介します。 1. 仮想光学ドライブ アプリケーションの使用 まず、インストールできます。

PowerPoint を使用して XML ファイルを開くことはできますか? PowerPoint を使用して XML ファイルを開くことはできますか? Feb 19, 2024 pm 09:06 PM

XML ファイルは PPT で開くことができますか? XML、Extensible Markup Language (Extensible Markup Language) は、データ交換とデータ ストレージで広く使用されている汎用マークアップ言語です。 HTML と比較して、XML はより柔軟であり、独自のタグとデータ構造を定義できるため、データの保存と交換がより便利で統一されます。 PPT (PowerPoint) は、プレゼンテーションを作成するために Microsoft によって開発されたソフトウェアです。包括的な方法を提供します。

PyCharmが開けない問題を解決する方法を共有します PyCharmが開けない問題を解決する方法を共有します Feb 22, 2024 am 09:03 AM

タイトル: PyCharmが開けない問題の解決方法 PyCharmは強力なPython統合開発環境ですが、時々PyCharmが開けない問題に遭遇することがあります。この記事では、一般的な回避策をいくつか紹介し、具体的なコード例を示します。この問題に遭遇した方のお役に立てれば幸いです。方法 1: キャッシュをクリアする PyCharm のキャッシュ ファイルにより、プログラムが正常に開けなくなることがあります。この問題を解決するには、キャッシュをクリアしてみてください。道具

Douyin ミニゲームはどこで開くことができますか? Douyin ミニゲームを開く 2 つの方法 Douyin ミニゲームはどこで開くことができますか? Douyin ミニゲームを開く 2 つの方法 Mar 15, 2024 am 09:30 AM

Douyin は人気のショート ビデオ ソーシャル アプリケーションで、ユーザーはさまざまな種類のショート ビデオ コンテンツを視聴および共有できるだけでなく、プレイできる一連のミニ ゲームも提供します。では、Douyin ミニゲームにはどこから参加できるのでしょうか? Douyin ミニゲームの入り口はどこですか?以下の詳細なチュートリアルを見てみましょう。方法 1: ミニ プログラムを開く 1. [My] オプションをクリックして、Douyin のホームページに入った後、[My] オプションをクリックして入ります。 2. 三本の横線をクリックします。My インターフェイスに入ったら、上の三本の横線のボタンをクリックします。 3. ミニ プログラムをクリックし、3 本の水平線のオプションを開いたら、その中にあるミニ プログラムをクリックします。 4. 「Douyin ミニ ゲーム」をクリックし、ミニ プログラム インターフェイスに入ったら、「Douyin ミニ ゲーム」オプションをクリックして開きます。方法 2: 検索して開く 1. 虫眼鏡をクリックして入力します。

トレントファイルを開く方法 トレントファイルを開く方法 Feb 24, 2024 pm 05:20 PM

トレントシードファイルはソフトウェアで開くことができますが、どのようなソフトウェアを使用して開くことができますか?ユーザーは、Thunder、BitComet、qBittorrent などのダウンロード ツールを使用してファイルを開いて、ダウンロードする必要があります。この torrent ファイルの開き方の紹介では、具体的な内容を説明します。以下に詳しく紹介しますので、ご覧ください。トレント シード ファイルを開く方法? 回答: Thunder、BitComet、qBittorrent などのダウンロード ツールを使用して開きます。 詳細な紹介: 1. トレントは、さまざまなダウンロード ソフトウェアで開くことができる BT シード ファイルです。 2. このソフトウェアをダウンロードする人が増えるほど、ダウンロード速度が速くなります。 3. 精度を確保するために、ソフトウェアはブロックをダウンロードするたびに Ha を計算します。

iPhoneに時計アプリがない:それを修正する方法 iPhoneに時計アプリがない:それを修正する方法 May 03, 2024 pm 09:19 PM

携帯電話に時計アプリがありませんか?日付と時刻は iPhone のステータス バーに引き続き表示されます。ただし、時計アプリがないと、世界時計、ストップウォッチ、目覚まし時計、その他多くの機能を使用できません。したがって、見つからない時計アプリを修正することは、やるべきことリストの一番上に置く必要があります。これらの解決策は、この問題の解決に役立ちます。解決策 1 – 時計アプリを配置する 誤って時計アプリをホーム画面から削除した場合は、時計アプリを元の場所に戻すことができます。ステップ 1 – iPhone のロックを解除し、App ライブラリ ページに到達するまで左にスワイプを開始します。ステップ 2 – 次に、検索ボックスで「時計」を検索します。ステップ 3 – 検索結果に以下の「時計」が表示されたら、それを長押しして、

cajファイルを開く方法 コンピュータでcajファイルを開く方法 cajファイルを開く方法 コンピュータでcajファイルを開く方法 Feb 22, 2024 pm 04:37 PM

Word Converter でファイルを選択し、「変換開始」をクリックしてファイルを開きます。分析 1. CAJ to Word コンバーターを開き、ソフトウェアの左側で CAJ to Word を選択します。 2次に、変換するファイルを選択し、「開く」をクリックします。 3最後に、「変換開始」をクリックすると、Wordでcajファイルを開くことができます。補足:cajのフォーマットとは? 1CAJは電子ジャーナルのフォーマットです。 CAJフルテキストブラウザを使用して読むことができます。 CAJ、NH、KDH、および China Journal Network の PDF 形式ファイルをサポートします。 China Journal Network の原文をオンラインで読むことも、ローカル ハード ドライブにダウンロードして China Journal Network の全文を読むこともできます。その印刷効果は元の表示と一致します。概要・注意点 CAJ は中国の学術雑誌です

See all articles