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

このQ&Aのポイント
  • WIN2000+IIS5+SQLServer2000で開発しています。レンタルサーバーでやってるのですが、ASPからSPを呼び出して挿入するとDBに文字化けして入力されてしまいます。
  • ASPからSQL文を丸投げすると文字化けしませんが、文字化けしてないレコードをASPから参照するとまた文字化けしてしまいます。
  • 自前の環境(WIN2000+SQLServer7)でテストするといずれも文字化けしません。レンタルサーバーが海外のもの、というのが問題なのかもしれませんが、文字コード等には何分詳しくないもので、解決案等ございましたらお教え願います。
回答を見る
  • ベストアンサー

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

WIN2000+IIS5+SQLServer2000で開発しています。 レンタルサーバーでやってるのですが、 ASPからSPを呼び出して挿入するとDBに文字化けして入力されてしまいます。(varcharの項目です) これがASPからSQL文を丸投げすると文字化けしません。 が、文字化けしてないレコードをASPから参照するとまた文字化けしてしまいます。 が、自前の環境(WIN2000+SQLServer7)でテストするといずれも文字化けしません。 レンタルサーバーが海外のもの、というのが問題なのかもしれませんが、文字コード等には 何分詳しくないもので、解決案等ございましたらお教え願います。 キャンセル可能期間もせまっており、微妙に焦り気味です(泣)。 宜しくお願いします。

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

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.3

"?A?・?A"と言う結果を見る限りどうもビット落ちしているみたいですね もしかしてレンタルサーバ環境は英語版とかですか? であればSQLServerのロケール設定を日本に設定する事で回避できるかもしれません。が、無理っぽいですよね(^^; 他の方法としてはストアドプロシージャに文字列を突っ込む前にbase64エンコード等で8bit目を使用しないデータに変換して格納し、出力時にデコードすると言う方法もあります。 またMicrosoft製品なので多分Unicode用のデータ型があるでしょうから、文字列はすべてUnicodeとして処理するようにするのも手だと思います(これが一番オススメ。後で他カ国語を扱ったりするのも楽ですから)。

honoda
質問者

補足

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

その他の回答 (3)

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.4

追加です 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/articles/J046/7/96.htm
honoda
質問者

お礼

お返事遅くなって申し訳ありません。 無事、問題なく動くようになりました。 ありがとうございました。

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.2

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

noname#518
noname#518
回答No.1

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

honoda
質問者

補足

わけわかんないこと言ってすみません。 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 としてあるだけです。 参照時のソース等も後ほど掲載しますので、よろしくお願いします。

関連するQ&A

  • ASPを用いてSQLServerからのデータ取得ができません。

    ASPを使ってSQLServerからのデータ取得ができません。 クライアントのPCから、Webサーバ経由でDBサーバへアクセスすると、 『[Microsoft][ODBC SQL Server Driver]分散トランザクション エラー』 というエラーメッセージが表示されます。 WebサーバとDBサーバが同一PC上にある場合は、問題なく実行できます。 また、同じテーブルを使って、簡単なサンプルコードを実行した場合では、WebサーバとDBサーバが別々のPC上にあっても問題なく動きます。 原因はIIS、もしくはSQLServerの設定にあるのか、それともASPファイルのソース自体にあるのか、わかりません。 どなたかご存知の方、よろしくお願いします。 DBとの接続はADO接続で、環境は、 Webサーバ/WindowsXP Pro、IIS 5.0 DBサーバ/WindowsXP Pro、SQLServer2000 を使っています。

  • phpMyAdmin内での文字化け

    サーバはさくらインターネットを利用してます。 レンタルサーバから専用サーバに移転したのですが、 専用サーバではphpMyAdminで日本語データの文字化けが起きます。 専用サーバのphpMyAdminからDB作成の際、下記の設定で行い、 MySQLの文字セット UTF-8 Unicode (utf8) MySQLの接続照合順序 utf8_unicode_ci DB の照合順序 utf8_unicode_ci レコードをINSERTする際、下記のように文字コードを指定し、 $sql=mb_convert_encoding($sql,"EUC-JP","EUC-JP"); execute_sql($con, $sql); 実行したら、phpMyAdmin内で日本語データが文字化けしました。 サイト内で表示しているDBデータ(日本語)は文字化けしませんでした。 DB の照合順序をutf8以外(ujis_japanese_ciなど)として、 DBを作った場合、レコードをINSERTしたら、サイト内のDBデータも phpMyAdmin内データもどちらも日本語が文字化けします。 また、レンタルサーバのphpMyAdminからDBデータをエクスポートして、 専用サーバのphpMyAdminからインポートした場合、 読み込むDBデータファイルの文字コードをUTF-8にしなければ、 phpMyAdmin内で日本語データが文字化けしてしまいます。 ただ、UTF-8にしてインポートしてもphpMyAdmin内では 文字化けしませんが、サイト内で表示しているDBデータは 文字化けします。 専用サーバのphpMyAdminから データを日本語の文字列に編集・更新したら、 phpMyAdmin内ではそのデータに関しては文字化けなく表示されますが、 サイト内ではそのデータは文字化けしてしまいます。 専用サーバ情報は下記の通りです。 【専用サーバ】 OS:CentOS 5 Apache 2.2.3 PHP5.1.6 DBサーバ:MySQL 5.0.77 アップしているファイルの文字コード:EUC 分かる方、ご回答、よろしくお願いいたします。

    • 締切済み
    • PHP
  • DBへ入出力する文字が文字化けしてしまいます。

    Urizakaと申します。 さて、現在Win2000+JBuilder4.0を使い、WinNTにあるDB(SQL-Server)へ とデータを出入力するというJSPの開発をしているのですが、この時になぜか DBへ入出力する日本語のデータが文字化けしてしまいます。 doGet、doPost部分で、入出力したデータに対して  (new String(request.getParameter("×××").getBytes("8859_1")); という雑誌に載っていた処理を加えてみたのですが駄目でした。 すみませんが、どなたか文字化けを防止する方法をご存知でしたら教えて ください。宜しくお願いします。

    • ベストアンサー
    • Java
  • SQLServer2000でログインできません

    Windows2000SP4、IISの環境です。 1.SQLServer2000の認証:Windows認証を使用 2.ODBC接続時、 1)接続するサーバ名:Local 2)SQL ServerがログインIDの権限の確認を行う方法は    :ネットワークへのログインIDでWindows NTの認証メカニズムを使う 3.ASPファイルで以下のように記述しています。 Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"DSN=*****ODBCで登録した名前\" 4.エラーメッセージ: Microsoft OLE DB Provider for ODBC Drivers (0x80040E4D) [Microsoft][ODBC SQL Server Driver][SQL Server]ユーザー \'*****(私のサーバ名)\' はログインできませんでした。 index.asp, line 22 5.その他 SQLクエリアナライザでは何も問題なく接続できます。 以上、説明が不十分かもしれません。 なぜログインできないか、ご存知の方教えてください。よろしくお願いします。

  • SQLServerにodbcで接続

    こんにちは。 WindowsServer2003でIIS・SQLServer・ASP(VBScript)を使って簡単なデータベースを作りたいのですが、いきないつまずいています。 testデータベースをSQLServerで作り、ODBCに【odbcsqlsv】と登録しました。 ASPスクリプトを <%@ Language=VBScript %> <html> <head> <title>動作テストHTML</title> </head> <body> <% Response.Write "テストーASP" Set cn = server.CreateObject("ADODB.Connection") StrCn ="odbcsqlsv" cn.Open StrCn strSQL = "SELECT * FROM table2" Set RS = cn.Execute(strSQL) Do While Not RS.EOF Response.Write RS.fields("name") RS.movenext Loop cn.close set cn = nothing %> </body> </html> を書き実行すると Microsoft OLE DB Provider for ODBC Drivers エラー '80040e4d' [Microsoft][ODBC SQL Server Driver][SQL Server]ユーザー '(null)' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。 とエラーが出ます。 SQL Serverの信頼関係接続とは何でしょうか? また関連付けはどのようにして行ったらよいのでしょうか? すみませんが、ご教授のほどをよろしくお願いします。

  • mysqldumpでリストアし一部外字が文字化け

    mysqldump  –default-character-set=utf8 でバックアップしてたsqlファイルを mysql –default-character-set=utf8 でインポートしWEBを開いてみたら 一部の外字が文字化けしてしまいました。 nkfでバックアップのsqlファイルの文字コード調べてみると、EUCJP-winとなっていました。 既に元のDBはサーバークラッシュの為無い状態です。 どなたかご教授お願い申し上げます。 <元DBの環境> OS:Windows2003Server DB:MySQL5.0 PHP:5.0 <リストアするDBの環境> OS:windowsXP DB:MySQL5.0 PHP:5.2

  • SQLServer2008のバックアップできない

    具体的にはSQL Server 2008 Expressのデータベースのバックアップで「パスが見つかりません・・」等のエラーメッセージが出てバックアップができないのです。 というのも、Windows Server 2008が来年1月にマイクロソフトのサポート終了になる事から これまでレンタルサーバーで使っていたWindows Server 2008のVPSからレンタルサーバーのプロバイダーの依頼もあり、Windows Server 2019にWEBコンテンツと共に連動していたSQL Server 2008 Expressのデータベース(SQL Server 2008 Expressのデータベース)もWindows Server 2019(SQL Server 2019 Expressのデータベース)に移行する事になり、Windows Server 2008のSQL Server 2008 Expressのデータベースのバックアップを取ろうとしたのですが「サーバー”*****”のバックアップに失敗しました。(Microsoft.SqlServer.SmoExtend)」というエラーメッセージの他に追加情報として 「System.data.SqlClient.SqlError:バックアップデバ:SQL2008_DB_Backup¥XXX(バックアップファイル名)を開けません。オペレーティングシステムエラー3(指定されたパスが見つかりません)Microsoft.SqlServer.Smo)」 というエラーメッセージが出てしまい、 SQL Server 2008 Expressのデータベースのバックアップが取れません。 どんな対処方法が考えられますでしょうか?

  • htmiファイルの文字化け

    htmlファイルのメタタグを以下のように設定、ファイルの文字コードもShift_JISで保存し、 2つのサーバーへアップしたところ、片方のサーバー(hetemlのレンタルサーバー)では 文字化けせずに表示されるのですが、もう片方のサーバー(自前サーバー、CentOS)では 文字化けしてしまいます。 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> そこで文字化けする方のサーバーのhttpd.confの設定で AddDefaultCharset UTF-8 の部分をコメントアウトし、apacheを再起動したのですが、いっこうに文字化けが直りません。 この場合、何かほかの設定が影響してることなのでしょうか? ちなみに、文字化けするサーバーへ各ブラウザでアクセスしたところ 以下のように文字化けするブラウザとしないブラウザがあります。 FireFox 文字化け IE(9)  文字化けしない Chorome 文字化けしない ブラウザによって文字化けするしないの原因もよくわかりません。 どなたか、ご教授いただけると幸いです。 よろしくお願いします。

  • SQLServer2008 ユーザー名の修飾無しでテーブル参照したい

    SQLServer2000で動作していたプログラムをSQLServer2008で動かそうとしています。 プログラムはDBのテーブルにアクセスする際にユーザー名(スキーマ)の修飾無しの SQLをDBに送っているためエラーになってしまいます。 SQLServer側の設定でスキーマと同じユーザーでログインしている場合は スキーマ修飾なしテーブルにアクセスする方法は無いでしょうか? 質問番号:4681290も参考にしたのですがログインユーザのサーバーロールはpublicのみが割り当てられています。 環境は専用レンタルサーバーでWindows Web Server 2008 + Microsoft SQL Server 2008です。 アドバイスいただければ幸いです。 よろしくお願いいたします。

  • 文字化け

    登録フォームを作成し、入力した内容でDBに追加を行うなかで、PHPmyadminで実際に見てみると文字化けしています。 レンタルサーバ(OS:linux) (1)登録フォーム(shift_jis) ↓各値を渡す (2)確認ページ(shift_jis) ↓各値をmb_convert_encoding(shift_jisに変更) (3)追加 すると文字化けします。 以前、cgi-lib.plを用いてperlで書いていたものは、 文字化けしていません。 どこがおかしいのでしょうか? ちなみに (1)登録フォーム(euc-jp) ↓各値を渡す (2)確認ページ(euc-jp) ↓各値をmb_convert_encoding(euc-jpに変更) (3)追加 としても文字化けしています。 (DBだけでなく、ページ全体も)

    • ベストアンサー
    • PHP

専門家に質問してみよう