Unicode、Turkish、およびEnumsに問題があるOrientdb
-
29-10-2019 - |
質問
このような定数を持つ列挙型のlibを使用しています; ジェネラコディセタグプレ
Eclipseでデバッグしているときに、エラーが発生しました: ジェネラコディセタグプレ
トルコのシステムを使用しているため、i>İの動作に問題がありますが、これは列挙型constであるため、すべての属性をUTF-8として指定しても、その STRING はEclipseが探すべきものです。しかし、それでもSTRİNGを探して、見つけることができず、私はそれを使用できません。そのために私は何をしなければなりませんか?
プロジェクト>プロパティ>リソース>テキストファイルのエンコーディングはUTF-8になりました。問題が続く。
編集:詳細情報は、私が得ることができないいくつかの手がかりを与えるかもしれません。 私はOrientDBに取り組んでいます。これは私の最初の試みなので、問題がOrientDBパッケージにある可能性があるかどうかはわかりません。しかし、私は他の多くのライブラリを使用しています。そのような問題は見たことがありません。このパッケージにはOType列挙型があり、データベースに接続しようとしているだけです。 ジェネラコディセタグプレ
私が使用しているコードはまだありません。データベースが作成されましたが、java.lang.IllegalArgumentException
を取得しました:
ジェネラコディセタグプレ
OTypeクラスは次のとおりです: http://code.google.com/p/orient/source/browse/trunk/core/src/main/java/com/orientechnologies/orient/core/metadata /schema/OType.java
そして他のクラス; OCommandExecutorSQLCreateProperty: http://code.google.com/p/orient/source/browse/trunk/core/src/main/java/com/orientechnologies/orient/core/sql/OCommandExecutorSQLCreateProperty.java
81行目:type = OType.valueOf(word.toString());
解決
トルコ語のロケールを使用してこのプログラムを実行していると仮定するのは正しいですか?次に、バグはOCommandExecutorSQLCreatePropertyの118行目にあるようです: ジェネラコディセタグプレ
大文字の大文字小文字の規則を使用するロケールを指定する必要があります。おそらく、Locale.ENGLISH
のパラメータとしてtoUpperCase
です。
他のヒント
この問題は、データベース接続に関連しています。おそらく、OrientDBのどこかに文字列があり、それを読んでいて、それを使用して列挙型のメンバーを選択しようとしています。
あなたが投稿したコードでは、変数word
はデータベース内のデータからのものであると想定しています。それがどこかから来ている場合、問題は「どこか他の場所」です。OrientDBが何らかの奇妙な理由で、メタデータとして「STRİNG」を返し、何かのタイプを通知する場合、それは確かにOrientDBの欠陥です。
その文字列に実際にİが含まれている場合、Eclipse設定は結果に影響を与えません。正規化するコードを作成する必要があります。
文字列のchar
の16進値のシーケンスとして「word」の内容をダンプすると、あなたのİがあなたをじっと見つめているのがわかると思います。昔ながらのIを使用するには、DBの内容を変更する必要があります。
残念ながら、これは地域の設定、トルコ語であるOSのロケールに関連しています。
2つの回避策オプション: ジェネラコディセタグプレ
同じ問題について、xmlbeans、exist、およびapachecxfのバグレポートを作成しました。列挙toUpperは例外のポイントです。
いくつかの関連リンク:
https://issues.apache.org/jira/browse/XMLSCHEMA-22
http:/ /mail-archives.apache.org/mod_mbox/xmlbeans-user/201001.mbox/%3CSNT123-DS11993DD331D6CA7799C46CF6650@phx.gbl%3E
https://vaadin.com/forum/-/message_boards/view_message/793105
http://comments.gmane.org/gmane .comp.apache.cxf.user / 18316
回避策の1つは、Type.ST
と入力してから、Ctrlキーを押しながらスペースを押すことです。Eclipseは、トルコ語のキーボードでドットのない大文字のIを入力する方法を理解しなくても、変数名をオートコンプリートする必要があります。:)