アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

レンタルサーバーが海外のもの、というのが問題なのかもしれませんが、文字コード等には
何分詳しくないもので、解決案等ございましたらお教え願います。
キャンセル可能期間もせまっており、微妙に焦り気味です(泣)。
宜しくお願いします。

A 回答 (4件)

"?A?・?A"と言う結果を見る限りどうもビット落ちしているみたいですね


もしかしてレンタルサーバ環境は英語版とかですか?
であればSQLServerのロケール設定を日本に設定する事で回避できるかもしれません。が、無理っぽいですよね(^^;

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

この回答への補足

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

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

取り急ぎ、ご報告まで。
ありがとうございました。

補足日時:2001/05/31 21:55
    • good
    • 0

追加です


MicrosoftのKnowledgeBaseからこういうArticleが見つかりました
>U.S. English 版 SQL Server 6.0 と 6.5 のデフォルトは ISO 8859-1 (Latin 1 あるいは ANSI) で、コードページ 1252 としても知られています。

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

参考URL:http://www.microsoft.com/JAPAN/support/kb/articl …
    • good
    • 0
この回答へのお礼

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

無事、問題なく動くようになりました。
ありがとうございました。

お礼日時:2001/06/20 10:47

下の方に続いて補足要求です


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

>ASPからSPを呼び出して挿入するとDBに文字化けして入力されてしまいます。

(varcharの項目です)
>これがASPからSQL文を丸投げすると文字化けしません。

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

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

ココのソースも。

この回答への補足

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

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!