-PR-
解決済み

SQLServerへの出し入れで文字化け

  • すぐに回答を!
  • 質問No.83053
  • 閲覧数3013
  • ありがとう数2
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 39% (13/33)

WIN2000+IIS5+SQLServer2000で開発しています。
レンタルサーバーでやってるのですが、
ASPからSPを呼び出して挿入するとDBに文字化けして入力されてしまいます。(varcharの項目です)
これがASPからSQL文を丸投げすると文字化けしません。

が、文字化けしてないレコードをASPから参照するとまた文字化けしてしまいます。

が、自前の環境(WIN2000+SQLServer7)でテストするといずれも文字化けしません。

レンタルサーバーが海外のもの、というのが問題なのかもしれませんが、文字コード等には
何分詳しくないもので、解決案等ございましたらお教え願います。
キャンセル可能期間もせまっており、微妙に焦り気味です(泣)。
宜しくお願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル11

ベストアンサー率 58% (114/195)

"?A?・?A"と言う結果を見る限りどうもビット落ちしているみたいですね
もしかしてレンタルサーバ環境は英語版とかですか?
であればSQLServerのロケール設定を日本に設定する事で回避できるかもしれません。が、無理っぽいですよね(^^;

他の方法としてはストアドプロシージャに文字列を突っ込む前にbase64エンコード等で8bit目を使用しないデータに変換して格納し、出力時にデコードすると言う方法もあります。
またMicrosoft製品なので多分Unicode用のデータ型があるでしょうから、文字列はすべてUnicodeとして処理するようにするのも手だと思います(これが一番オススメ。後で他カ国語を扱ったりするのも楽ですから)。
補足コメント
honoda

お礼率 39% (13/33)

ご回答ありがとうございます。

alfeimさんの教えに従ってテーブルのカラムをUnicodeにしてみましたが、文字化けは直りませんでした。
さらに、”コードページ”と聞いて意味もわからなかったのですが、ASPの最初にCODEPAGE=932としてみたら、、、
どうもきちんと登録できたようです。
もう少しテストして、登録、参照、更新できることを確認します。

取り急ぎ、ご報告まで。
ありがとうございました。
投稿日時 - 2001-05-31 21:55:40
関連するQ&A
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.2
レベル11

ベストアンサー率 58% (114/195)

下の方に続いて補足要求です 出来れば元の文の文字列と化けた文字を一緒に指し示してくださるとどういう原因で化けてるかの推測に使えます(可能であればバイト列として指し示してもらえるとなお可です)。
下の方に続いて補足要求です
出来れば元の文の文字列と化けた文字を一緒に指し示してくださるとどういう原因で化けてるかの推測に使えます(可能であればバイト列として指し示してもらえるとなお可です)。


  • 回答No.1

>ASPからSPを呼び出して挿入するとDBに文字化けして入力されてしまいます。(varcharの項目です) >これがASPからSQL文を丸投げすると文字化けしません。 よく意味がわからない^^; ASPからSP? 丸投げ? 自分の言葉ではなく、きちんと書いていただけますか?^^; できれば、その個所のソースもあれば良いです。 >が、文字化けしてないレコードをAS ...続きを読む
>ASPからSPを呼び出して挿入するとDBに文字化けして入力されてしまいます。(varcharの項目です)
>これがASPからSQL文を丸投げすると文字化けしません。

よく意味がわからない^^;
ASPからSP?
丸投げ?
自分の言葉ではなく、きちんと書いていただけますか?^^;
できれば、その個所のソースもあれば良いです。

>が、文字化けしてないレコードをASPから参照するとまた文字化けしてしまいます。

ココのソースも。
補足コメント
honoda

お礼率 39% (13/33)

わけわかんないこと言ってすみません。

ASPからパラメータ値を入れてSQLServerのストアードプロシージャ(SP)を呼ぶと、化けてしまうということです。
それに対して、SQL文をASPの中に書きこんでそれをSQLServerに渡すと文字化けしないのです。
例えば、usr_name というvarchar(50)のカラムのみを持つDBにデータを挿入するとして、

set connDB = Server.CreateObject("ADODB.Connection")
connDB.Open Application("WebAccount")
set cmd01 = Server.CreateObject("ADODB.Command")
set cmd01.ActiveConnection = connDB
cmd01.CommandText = "sp_test01"
cmd01.CommandType = adCmdStoredProc

'リターン値
cmd01.Parameters.Append cmd01.CreateParameter("return",adInteger,adParamReturnValue)
'入力パラメータ追加
cmd01.Parameters.Append cmd01.CreateParameter("usr_name_1",adVarChar,adParamInput,50)
'パラメータ値の代入
cmd01.Parameters("usr_name_1")="てすと"
'SP実行
cmd01.Execute

として"てすと"3文字を入れようとするとDBには"?A?・?A"となって挿入されてしまいます。"test"ですときちんと入ります。

ストアードプロシージャは、
CREATE PROCEDURE [sp_test01]
(@usr_name_1 [varchar](50))

AS INSERT INTO [db-rokyu.net].[dbo].[test01]
( [usr_name])

VALUES
( @usr_name_1)
GO

としてあるだけです。

参照時のソース等も後ほど掲載しますので、よろしくお願いします。
投稿日時 - 2001-05-31 02:49:23
  • 回答No.4
レベル11

ベストアンサー率 58% (114/195)

追加です MicrosoftのKnowledgeBaseからこういうArticleが見つかりました >U.S. English 版 SQL Server 6.0 と 6.5 のデフォルトは ISO 8859-1 (Latin 1 あるいは ANSI) で、コードページ 1252 としても知られています。 との事なので件のレンタルサーバが日本語版SQL Server2000を使っていないのであれば ...続きを読む
追加です
MicrosoftのKnowledgeBaseからこういうArticleが見つかりました
>U.S. English 版 SQL Server 6.0 と 6.5 のデフォルトは ISO 8859-1 (Latin 1 あるいは ANSI) で、コードページ 1252 としても知られています。

との事なので件のレンタルサーバが日本語版SQL Server2000を使っていないのであればコードページの可能性が高いのではないでしょうか?
お礼コメント
honoda

お礼率 39% (13/33)

お返事遅くなって申し訳ありません。

無事、問題なく動くようになりました。
ありがとうございました。
投稿日時 - 2001-06-20 10:47:28
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ