24

最近、VS2010で次の警告が表示されました。

警告21警告C4819:ファイルに現在のコードページ(936)で表現できない文字が含まれています。データの損失を防ぐために、ファイルをUnicode形式で保存します

c:\boost\vs2010_boost1.49\include\boost\format\alt_sstream_impl.hpp 1

MSDNに基づいて、ファイルにはUnicode形式で保存する必要のある文字が含まれています。

質問:私はそれらのファイルに自分で触れませんでした。それらの文字を見つけて手動で修正する方法はありますか?つまり、ソースファイルをUnicode形式で保存したくありません。

ありがとうございました

4

5 に答える 5

51

Notepad ++を使用すると、正規表現を使用してファイル内のすべてのUnicode文字を検索できます。

  1. Notepad++でファイルを開きます。
  2. EncodingメニューからUTF-8を選択していることを確認してください。
  3. 検索ボックスを開きます(CTRL-Fを使用するか、[検索]メニューに移動して[検索... ]を選択します)。
  4. [検索モード]で、[正規表現]のラジオボタンを選択します。
  5. [検索する文字列]ボックスに入力[^\x00-\x7F]し、[次を検索]ボタンをクリックして、何が表示されるかを確認します。

Unicode文字を見つけたら、それらを削除/変更し、エンコーディングをANSIに戻し、ファイルを保存できます。

もちろん、Notepad++を使用する必要はありません。RegExは、SublimeTextなどの他のテキストエディタで機能します

于 2012-05-08T15:41:23.710 に答える
6

私は自分のプロジェクトでこの問題に遭遇し、すべての非Unicode文字を変更しようとしました。しかし、そのような問題のあるファイルが多すぎたため、私はあきらめて別の方法を見つけなければなりませんでした(それらはすべてコメントに含まれていますが)。

次に、「システムロケール」を設定することでこれを修正する簡単な方法を見つけました。

Control Panel -> Clock,Language,and Region -> Region and Language -> 
Administrative -> Language for non-Unicode programs -> Change system locale -> English

'システムロケール'が英語でない場合、これで問題が解決すると思います。

https://stackoverflow.com/a/37871883/3148107

于 2016-06-17T01:54:52.603 に答える
3

Visual Studioで上記の正規表現を使用して、これらの文字を見つけることができます。これが正規表現です:[^\x00-\x7F]

于 2017-08-24T22:10:34.390 に答える
2

176行目:

BOOST_ASSERT(0); // §27.4.3.2 allows undefined-behaviour here

ほら、上の行の27の前に文字があります。

于 2013-03-07T03:24:42.447 に答える
1

基本的に、オペレーティングシステムのデフォルトの文字セットではない別の文字セットでエンコードされたファイルをコンパイルした可能性があります。1つの方法は、デフォルトのエンコーディングではデコードできない文字を削除することですが、私は、ファイルをトランスコーディングするためにNotepad++を使用する別の方法を好みます。この目標を達成するには、[エンコーディング]-> [xxxに変換]をクリックします。ここで、xxxはオペレーティングシステムのデフォルトのエンコーディングです。

于 2019-11-16T13:06:20.507 に答える