もう1つのWin10の癖-そしてそれに対処する方法

資格を向上させる必要がある場合もあり、一般的には脳が勉強するのに役立ちます。そのため、最近、Pythonとそのすべてのフレームワークを学ぶためのコースを受講しました。先日、Djangoに着きました。そして、ここでは、トレーニングの過程で、バグだけでなく、Python 3、Sqlite 3、JSON、Win 10のジャンクションで素晴らしい効果をまとめて見つけました。さらに、その効果は非常に素晴らしかったので、Googleは私たちを助けませんでした-関心のあるグループ全体が教師と集まり、集合的な心でそれを解決しなければなりませんでした。





しかし、要点はこれです。データベースを調査し(DjangoにはSqlite 3がプリインストールされています)、手でデータを再度ドライブする必要がないように、jsonファイルからのスクリプトを使用して読み込みを強化しました。そして、データベースからのデータは、Pythonメソッドを使用してファイルにダンプされました。





python manage.py dumpdata -e contenttypes -o db.json
      
      



突然、Windowsで作業していた人たち(すべてのバージョンを保証することはできません。Win10の居住者だけが私たちを思いついたのです)は、Windows-1251エンコーディングでダンプしていることに気付きました。さらに、このエンコーディングのジェイソンは完全にデータベースに供給されます。しかし、それらがSqlite 3、Python 3、特にJSONの標準ドキュメントに再フォーマットされるとすぐに、UTF-8エンコーディングは、せいぜいデータベース内のキリル文字がカボチャになり、最悪の場合、データ全体がカボチャになりました。ロードプロセスが失敗しました。





この種のものは、英語を含め、ドキュメントにもGoogleの他の部分にも見つかりませんでした。プロジェクトのコンソールまたは管理パネルを介した同じデータの最も不思議な手動ロードは時計のように機能しましたが、エンコードは間違いなくUTF-8でした。さらに、データベースへのエンコーディングの強制的な処方は何の効果もありませんでした。





この影響の理由は、Jasonとオペレーティングシステムの相互作用であると想定しました。どういうわけか、Jasonを読み書きするときに、システムは通常のエンコーディングではなく独自のエンコーディングを課しました。実際、ファイルを開くときにUTF-8エンコーディングが強制的に設定された場合:





open(os.path.join(JSON_PATH, file_name + '.json'), 'r', encoding="utf-8")
      
      



基地に入ったのはクラコザブリではなく、通常のロシア語の文字でした。しかし、この方法でダンプを作成する際の問題は解決できず、手作業でエンコードをやり直すことも、どういうわけか私たちのやり方ではありません。





.





. :





  • , , :





  • ( ) :





  • "" " ":





  • "-: (UTF-8) .





, .





, ( , ), - . .








All Articles