問題タブ [latin1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2135 参照

php - ajaxリクエストと特殊文字を使用したlatin1/unicode変換の問題

サーバーはPHP5で、HTML文字セットはlatin1(iso-8859-1)です。通常の形式のPOST要求では、たとえばemダッシュ(–)などの「特殊」文字に問題はありません。よくわかりませんが、動作します。おそらく、charコード150でブラウザに表現可能な文字が存在するためです(これは、サーバー上のPHPで文字通りのemダッシュを使用して表示されるものですord)。

これで、アプリケーションはajaxを介してある種のプレビューメカニズムも提供します。テキストがサーバーに送信され、プレビュー用の完全なHTMLが返送されます。ただし、ajax経由で送信された場合の通常の文字コード150 emダッシュ文字(GETおよびPOSTでテスト済み)は、さらに次のように変化します%E2%80%93。これはすでにapacheログに表示されています。

http://www.tachyonsoft.com/uc0020.htmなど、私が見つけたさまざまな情報源によると、これはem dashのUTF8バイト表現であり、現在の知識では、JavaScriptがすべてをUnicodeで処理します。

ただし、私のアプリ内では、latin1のすべてが必要です。簡単に言うと、通常のPOSTリクエストでそのemダッシュがcharコード150として与えられたのと同じように、翻訳されたUTF8表現にもそれが必要になります。

utf8_decode(...)サーバー上のPHPを使用して、どちらかまたは両方でデコードしようとすると、この文字を表すiconv('UTF-8', 'iso-8859-1', ...)通常の文字が表示されるため、失敗しました?(そして、iconvも通知をスローします:入力文字列で不正な文字が検出されました) 。

私の目標は自動化された解決策を見つけることですが、この場合、私は超賢くなりたいと思っていますか?

他の人が、事前定義された入力/出力セットに手動で置き換えるだけであることがわかりました。でもそれはいつも私がキャラクターを失うことができるという感覚を私に与えます。

注意深い読者は、私がUnicodeと文字の変換に関することの完全な影響/複雑さを理解するのに遅れていることに気付くでしょう、そして私は間違いなく全体として、そして単に手動のマッピングを理解することを好みます。

シングルバイト文字の必要性に関するDelandsの質問に基づいて更新します。

真実は、私はそれが必要かどうかわかりません。現在、サーバーにデータを渡して戻すには2つの方法があります。

  1. クライアントlatin1->通常のPOSTリクエスト->サーバー上のlatin1、latin1で完全なページを送り返します。文字はOKです。

  2. クライアントlatin1->ajaxリクエスト(取得または投稿)->latin1はutf8に変換されます->utf8をlatin1に変換し直そうとします->latin1HTMLフラグメントをクライアントに送信してインラインで表示します->特殊文字は失敗します

utf8-> latin1からの変換は、上記のutf8_decode / iconで説明したように機能しないため、2番目の方法は失敗します。

私の最終的な目標は、ユーザーが入力したデータのプレビューを表示することです。HTMLレンダリングやその他のデータ評価を行うには、サーバーのラウンドトリップが必要です。

ソリューション

アランの答えは解決策です。これは後ろのようにlatin1扱われwindows-1252、これはWord(少なくともここでは私の2007年)がブラウザとの間で何かをコピーして貼り付けるときに使用するようにも見えます。

さらに興味深いリンク(Alans wikipediaの記事から)は、HTML5構文へのリンクです。

8.2.2.2:ユーザーエージェントは、少なくともUTF-8およびWindows-1252エンコーディングをサポートする必要がありますが、それ以上をサポートする場合もあります。

..。

ユーザーエージェントが次の表の最初の列に示されているエンコーディングを使用してコンテンツをUnicode文字に変換するか、Unicode文字をバイトに変換する場合、代わりに同じ行の2番目の列のセルに示されているエンコーディングを使用する必要があります。 。このエンコーディングエイリアシングのためにバイトまたはバイトシーケンスが異なる方法で処理される場合、互換性のために誤って解釈されたと言われます。

..。

入力エンコーディング:ISO-8859-1- >置換エンコーディング:windows-1252

0 投票する
1 に答える
993 参照

mysql - rails、mysql の文字セットとエンコーディング: バイナリ

utf-8 を使用して実行される Rails アプリがあります。これは、mysql データベース、mysql のデフォルトの文字セットと照合 (すなわち latin1) を持つすべてのテーブルを使用します。したがって、latin1 テーブルには utf-8 データが含まれます。確かに、それはいいことではありませんが、私はあまり興味がありません。接続エンコーディングも latin1 であるため、mysql は文字セット間で変換しないため、すべて正常に動作します。

1 つだけ問題があります。1 つのテーブルに utf-8 フルテキスト インデックスが必要です。

しかし: Rails アプリで文字セットを変換したくありません。したがって、 config/database.yml を設定できるかどうか知りたいです

mySQL に接続するときに SET NAMES 'binary' を呼び出すだけです。私の場合はうまくいくようです。これは、mysql が文字セット間で変換しないようにするためです ( mySQL docs )。これを行うことに関する問題について誰かが知っていますか? 副作用はありますか?

または、他に何か提案はありますか?しかし、データベース全体を utf-8 に変換することは避けたいと思います。

どうもありがとう!ベンジャミン

0 投票する
2 に答える
322 参照

php - ♥☆などの文字をDBに保存するには?

0 投票する
2 に答える
4359 参照

mysql - MySqlvarcharがLatin1からUTF8に変更されました

mySqlテーブルでは、Latin1文字セットを使用してvarcharフィールドにテキストを格納しています。現在、当社のWebサイトはより多くの国でサポートされているため、代わりにUTF8のサポートが必要です。代わりにこれらのフィールドをUTF8に変更するとどうなりますか?これを行うのは安全ですか、それともこれらのフィールド内のデータを台無しにしますか?フィールドをUTF8に変更するときに考慮する必要があることですか?

ありがとう!

0 投票する
2 に答える
336 参照

python - appengine でラテン文字を使用する

ラテン文字をappengineに保存するにはどうすればよいですか? (例: "peña") これを保存しようとすると、次のエラーが発生します。

Ñ を N で変更できますが、他にもっと良い方法はありませんか?

そして、値をエンコードすると、どうすれば「Peña」を再度印刷できますか?

0 投票する
1 に答える
1471 参照

php - latin1でエンコードされたテキストをutf8テーブルに挿入します(mysql_set_charsetを使用するのを忘れました)

utf8テキストを取得するMySQLテーブルを備えたPHPWebアプリがあります。最近、データをlatin1からutf8に、それに応じてテーブルと列とともに変換しました。ただし、mysql_set_charsetを使用するのを忘れており、MySQL接続を介してlatin1として送信されたと思われる最新の受信データを使用していました。latin1がutf8列に入るとどうなるかわかりませんが、コンマ、引用符、アンパサンドなどの項目で奇妙な表示の問題が発生しています。

mysql_set_charsetが配置されたので、ファンキーな文字でデータを引き出しています。正しい文字セットを使用するデータベース接続リソースがあるので、latin1-utf8スープをストレートutf8に変換する方法はありますか?

0 投票する
3 に答える
17822 参照

python - CP-1252/ANSI読み取りでPython3チョーク

私は一連のパーサーに取り組んでおり、次のような単体テストから多数のトレースバックを取得します。

ファイルはopen()で開かれ、余分な引数はありません。open()に追加の引数を渡すか、コーデックモジュールで何かを使用してこれらを別の方法で開くことはできますか?

これにより、Python 2で記述され、2to3ツールで3に変換されたコードが作成されました。

更新:これは、zipファイルをパーサーにフィードした結果であることがわかりました。単体テストでは、実際にこれが発生することを想定しています。パーサーは、それを解析できないものとして認識する必要があります。したがって、例外処理を変更する必要があります。今それをしている過程で。

0 投票する
2 に答える
11850 参照

php - ISO-8859-1 として表示される Utf-8 文字

データベースからの utf8 コンテンツの挿入/読み取りに問題があります。私が行っているすべての検証は、DB のコンテンツが utf8 でエンコードされている必要があることを示しているようですが、ラテン語でエンコードされているようです。データは、最初に CLI の PHP スクリプトからインポートされます。

構成:

検証:

-mysql:

-データベース

-sql: 挿入を行う前に、

-php: 挿入を行う前に、utf8_encode()mb_detect_encoding()を使用して、'UTF-8' を取得します。db からコンテンツを取得した後、ユーザーに送信する前に mb_detect_encoding() も 'UTF-8' を返します

検証テスト:

コンテンツを適切に表示する唯一の方法は、コンテンツ タイプをラテン語に設定することです (トラフィックをスニッフィングすると、ISO-8859-1 のコンテンツ タイプ ヘッダーが表示されます)。

このテストは、コンテンツがラテン語として出力されることを示しています。理由がわかりません。誰にもアイデアはありますか?

ありがとう。

0 投票する
1 に答える
8348 参照

php - 西洋以外の文字を検出するにはどうすればよいですか?

特定のUTF-8入力(サーバー側)、たとえば東部言語を禁止したいのですが、入力例は「伊」である可能性があります。

ただし、ウェールズ語のŵやŷなど、他のラテン語または「ラテン語に似た」文字を引き続きサポートしたいので、latin-1との照合はできません

私のオプションは何ですか?(言語固有の場合、PHPを推奨)

どうもありがとう。


理由:多くの非西洋文字のブラウザサポートが欠落していることがよくあります(たとえば、別のブラウザでは上記の質問にボックスが表示されます)。したがって、表示名などの場合は、適切でない場合でも制限することが適切な場合があります。メッセージ本文

0 投票する
2 に答える
967 参照

php - latin1 で動作するように php-mysql-apache を設定しましたが、バックアップを行うとき、文字セット クライアントはまだ utf8 です。

はい、あなたの考えはわかりますが、当面は latin1 を選択することにしました。

これは mySQL 構成です。 • mysql> SHOW VARIABLES LIKE 'character_set_%';
• +-------------------------+--------+
• | | 変数名 | 値 |
• +-------------------------+--------+
• | | character_set_client | ラテン1 |
• | | character_set_connection | ラテン1 |
• | | character_set_database | ラテン1 |
• | | character_set_results | ラテン1 |
• | | character_set_server | ラテン1 |
• | | character_set_system | utf8 |> デフォルトのシステム パラメータであるため、これを変更することはできません。

PHPの場合、php.ini で次のコマンドを使用します。
mssql.charset = "ISO-8859-1"

通常のApacheの場合:
AddDefaultCharset ISO-8859-1

バックアップを行うたびに、次の内容が各テーブルに追加され
ます
/
!40101 SET character_set_client = utf8 */;

apache/php と mysql 間の接続で character_set_client がまだ utf8 になっているのはなぜですか?