OneNoteでエラー コード: 0xE00001AEが発生した場合の対処

OneNoteで「このセクション ファイルは破損しているようです。OneNote で修復できる可能性がありますが、それまでの間、ここでは作業をしないでください。 (エラー コード: 0xE00001AE)」が出た場合の対処法。

1.One Noteのバージョンが最新になっているか確認する
ファイル→アカウントを開きます。

オフィス更新プログラムの更新オプションから「今すぐ更新」を選んで下さい。「Windows Updateを掛けているよ」と言う人でも、セキュリティアップデートは適用されているけど、更新プログラムは適用していない言うことがままあります。

2.壊れたページを削除して、ゴミ箱を空にしてみる
特定のページを開いたときにエラーが表示される場合、そのページが壊れています。諦めてそのページを削除しましょう。ページを右クリックして「削除」を選んだだけだと、ゴミ箱に送られただけで、ページ自体は破棄されません。そのためエラーの表示もなくなりません。
One Noteのゴミ箱は分かりにくい場所にあります。ブックを右クリックして「ノートブックのゴミ箱」を選択して下さい。

「削除されたページ」というシートが表示されるので、そこで再び右クリックして「ゴミ箱を空にする」を選びます。「削除されたページ」意外にも複数の削除済みページが表示される場合には、それらも順に削除します。

Office 2016で再度ライセンス認証画面が酷い

Office 2016で再度ライセンス認証が必要になった場合に表示される画面だが、ここまで酷い化けた画面は滅多に見ない。初見だとおそらく操作できないだろう。

最初の画面、チェックボックスの位置がずれている。本来は「ソフトウェアのライセンス認証をインターネットで行う」と「ソフトウェアライセンス認証を電話で行う」の所にチェックボックスがあるが、エラーメッセージの場所に移動している。上段のエラーメッセージを選ぶとインターネット経由に、下段のエラーメッセージを選ぶと電話認証になる。「戻る」に化けてしまっているが、このボタンで「次へ」すすむ。

通常のパッケージ版ではインターネット経由でのライセンス認証は一度しか出来ない。多くのユーザーは電話認証を選ぶ必要がある。

電話認証に進んだわけだが、これも中々に酷い。位置関係が完全に崩れている。本来なら最初にドロップダウンリストボックスから匡と地域を選択すると、日本国内の電話認証のための電話番号が表示されるのだが、表示されない。仕方が無いのでインターネットでライセンス認証の電話番号(0120-801-734)を調べる。リンク先にOffice2016の記載は無いが、全てのプロダクトで共通の電話番号なので問題ない。

Aという表記の脇に、7桁の数字が9組ならんでいる。これがインストールIDなので自動応答のガイダンスに合わせて入力していく。実は自動応答でのライセンス認証は失敗する(ぉぃ)ので、エラーとなって失敗した後オペレーターが出るのでオペレーターに対応して貰う。

オペレーターから確認IDを教えて貰って入力していく。テキストボックスが8個並んでいる、ラベルの表記がずれているが、一番左がA、順にB~Hとなるので順番に入力していく。入力が済んだら「戻る」を押して「次へ」進もう。特に入力に誤りが無ければ、これでライセンス認証が終了する。

ダウンロードする時にファイル名の空白が+に置き換わる

ブラウザからファイルをダウンロードさせるために次のようなコードで処理すると、ファイル名に半角空白が含まれている場合に半角空白が+に置き換わってしまいます。

string sourceFile = @"D:\sample.dat";
string fileTitle = HttpUtility.UrlEncode("ダウンロード ファイル名.dat");
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileTitle);
Response.Flush();
Response.WriteFile(sourceFile);
Response.End();

原因はASP.NETのUrlEncodeの処理と、ブラウザ側のURLエンコードの処理が異なる事にあります。.NETのUrlEncodeは半角空白を+にエンコードしますが、逆にInternet Explroerは+を半角空白にデコードしません。

次のような行を追加して、UrlEncodeした文字列に含まれている+を%20に置き換えてしまえば解決します。

fileTitle = fileTitle.Replace("+", "%20");

混乱の原因はRFC1738→RFC1808→RFC2396→RFC3986と度々変更されたURLの仕様と、World Wide Web Consortium(W3C)のHTML4移行の仕様にあるFORMで入力したデータをエンコーディングに関する仕様の不整合にあるようです。

HTML4移行の仕様ではFORMに入力した空白を+に置き換える事が定義されてます。ASP.NETのUrlEncodeはFORMで使用するデータのエンコードを前提として実装しているため空白を+に置き換えているのに対して、Internet ExplorerはRFC2396まではURLで使用を認められてきた+をそのまま通す仕様になっている・・・と言う事のようです。UrlEncodeの仕様はどのレベルRFCに準拠するのか、FORMでの変換ルールに従うか否かといった、開発者の考え方によって様々な実装が生まれているのが現状です。

よってUrlEncodeを使う場合には、相手側の実装がどうなっているかを都度テストして合わせていく必要があります。なんとも混沌としていて残念な限りです。

参考URL:https://www.glamenv-septzen.net/view/1170#idb783f7