teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

引用範囲を修正

2018/08/04 06:06

投稿

hope_mucci
hope_mucci

スコア4447

answer CHANGED
@@ -85,7 +85,8 @@
85
85
 
86
86
  ### 8/4 追記を受けて
87
87
  > 判定したい目的)
88
- > 文字化け後の文字がファイル名に使えるかどうか判定したいから
88
+ 文字化け後の文字がファイル名に使えるかどうか判定したいから
89
- > (半角ハテナはファイル名に使用不可、全角は使用可)
89
+ (半角ハテナはファイル名に使用不可、全角は使用可)
90
+
90
91
  という理由なら、本回答で例示した変換表をもって事前変換するか、処理の都度検証コードでも書いた`select :var from dual`をOracle側に投げて変換後の文字列を事前取得。それをもってファイル名のバリデーションをかければいいのではないかと。
91
92
  前述したとおりクライアントによって変換の仕様が異なるので試しに投げてみるのが一番だと考えます。

1

8/4 追記を受けてコメント追加

2018/08/04 06:06

投稿

hope_mucci
hope_mucci

スコア4447

answer CHANGED
@@ -81,4 +81,11 @@
81
81
 
82
82
  つまり、変換できない文字がどのように扱われるかは環境依存となり、解決策は実環境で全文字変換してリストを作り、そのリストをもとに個別にどう扱うか検討する必要がある、ということでしょう。
83
83
 
84
- なお、上のコードはOracle.ManagedDataAccessで実行した結果で、クライアント側のドライバが変わると結果が変わる可能性があるので、質問者さんのほうでも個別検証して結果を取得すべきと思います。
84
+ なお、上のコードはOracle.ManagedDataAccessで実行した結果で、クライアント側のドライバが変わると結果が変わる可能性があるので、質問者さんのほうでも個別検証して結果を取得すべきと思います。
85
+
86
+ ### 8/4 追記を受けて
87
+ > 判定したい目的)
88
+ > 文字化け後の文字がファイル名に使えるかどうか判定したいから
89
+ > (半角ハテナはファイル名に使用不可、全角は使用可)
90
+ という理由なら、本回答で例示した変換表をもって事前変換するか、処理の都度検証コードでも書いた`select :var from dual`をOracle側に投げて変換後の文字列を事前取得。それをもってファイル名のバリデーションをかければいいのではないかと。
91
+ 前述したとおりクライアントによって変換の仕様が異なるので試しに投げてみるのが一番だと考えます。