タグ

UTF-8と文字コードに関するastk_fのブックマーク (10)

  • Visual C++(cl.exe)で UTF-8 のファイルをコンパイルする - Bite Code

    語版 Windows では、デフォルトの文字コードとして Shift-JIS(CP932)が広く使われています。 この Shift-JIS、2バイト目が ASCII コードと同じ、という文字がいくつか存在します。 例えば「ソ」の Shift-JIS でのコードは16進数で835cで、2バイト目の5cはバックスラッシュ(または¥マーク)と同じです。 このため、例えば #include <iostream> int main() { char str[] = "ソ"; std::cout << str << std::endl; return 0; } 上記を Shift-JIS で保存してコンパイルしてみます。 Visual Studio では問題なくコンパイル・実行できるのですが、gcc(g++)では、 error: missing terminating " character ch

    Visual C++(cl.exe)で UTF-8 のファイルをコンパイルする - Bite Code
  • Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 少し前に、babaさんから「Rubyの内部文字コードはUTF-8じゃないよ」とツッコミがありました。 (追記: 上は会話の途中から切り取りましたのでご了承ください) いきなりの展開にくらくらきましたが、babaさんはさらにたたみかけます。 こうしたことはとっくにご存じの方も多いと思いますが、「Rubyといえば2.0以来UTF-8完全対応なんじゃないの」と勝手に思い込んでた私は脳に掌底をらったような思いです。ああ、でもこういうことがあるから面白い。 ⚓ プログラミング言語と内部文字コードの関係 まず最初に押さえておきたい点です。プログラミング言語で文字コードに関連する部分は、「文字列」「正規表現」「入出力」「コード中の文字リテラル(""の中など)」「コード中の文字リテラル以外の要素(変数名など)」「ファイル名」などが中心になります。そして文字列に関連し

    Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社
  • MySQL で utf8 と utf8mb4 の混在で起きること - tmtms のメモ

    MySQLUTF-8 で使おうと思ってハマりがちなのは charset utf8 を指定してしまうことです。 MySQLUTF-8 には歴史的事情により utf8 と utf8mb4 の二つあります。 UTF-8 は1バイト〜4バイトで1文字が構成される文字コードですが、MySQL の utf8 は4バイト文字を扱うことができません。ハマりたくなければ utf8mb4 を使いましょう。 utf8 を使ってしまった場合に4バイト文字がどのように扱われるか、自分でもうろ覚えだったのでメモしておきます。 登録 接続が utf8mb4 でカラムが utf8mb4 あたりまえですが、そのまま登録されます。 mysql> insert into utf8mb4 (c) values ('美味しい🍣と🍺'); mysql> select * from utf8mb4; +--------

    MySQL で utf8 と utf8mb4 の混在で起きること - tmtms のメモ
  • プログラミング言語における文字コードの話

    世の中がほぼUnicode前提になってめでたしめでたし。とはいかなかった現実の話。 String型でできる文字列処理とか、ソースコード自体、特に識別子で使える文字とか。 軽くおさらい: Unicode まあいろんなところでいろんな人が書いてると思うのでさらっと概要だけ。 Unicodeは、元々、「65,536文字あれば十分だろ」とかいう幻想の元、2バイト固定長の文字コードとして作られていました。 もちろん足りなくて、ビット数を拡張。基が2バイトのままでこの拡張した分を取り扱えるようにしたのが今のUTF-16で、拡張分は2文字分(4バイト)を使って表現。 この、2文字分使って1文字を表すやつのことをサロゲートペア(surrogate pair: 代理対)と呼びます。 あと、ASCII文字も2バイトになるのを欧米人が嫌って、ASCII文字はASCIIコードのまま、逆に漢字・ひらがな・カタカナ

    プログラミング言語における文字コードの話
  • MySQL 5.7 と絵文字(ちょこっと Rails) - TMD45'β'LOG!!!

    絵文字UTF-8 の 4 byte 文字にあたる)を利用可能とするため、文字コードは utf8mb4 を利用する。 絵文字だけでなく非常用漢字なども対応するためには必要。 サーバ設定 とりあえず開発環境(Mac)は Homebrew でインストール brew install mysql (検証時点で 5.7.13)。 サーバの設定を以下のとおり変更する。 $ diff /etc/my.cnf.org /etc/my.cnf --- /etc/my.cnf.org 2016-07-05 18:46:02.000000000 +0900 +++ /etc/my.cnf 2016-07-15 14:43:47.000000000 +0900 @@ -16,7 +16,7 @@ # The following options will be passed to all MySQL clients

    MySQL 5.7 と絵文字(ちょこっと Rails) - TMD45'β'LOG!!!
  • Hacking with Unicode in 2016

    This presentation explores common mistakes made by programmers when dealing with Unicode support and character encodings on the Web. For each mistake, I…

    Hacking with Unicode in 2016
  • C++: std::wstring、std::u32string、std::u16string を1文字ずつ表示する

    C++: 文字列の一部を取り出す (std::string)C++: Mac OSX で std::wcout を使ってワイド文字を表示させようとするとクラッシュするC++ : wchar_t、char32_t、char16_t 型の文字列の長さを求めるC++: std::wstring、std::u32string、std::u16string を1文字ずつ表示するC++: std::wstring、std::u32string、std::u16string と c_str メソッドの戻り値についてC++: 文字列を連結するC++: 文字列イテレーターのインデックスを求めるC++: UTF-8 の文字列を1文字ずつ表示する (std::string)C++: UTF-8 の文字列の長さを求める (std::string)C++: コードポイントから UTF-8 の文字を生成する (std

    C++: std::wstring、std::u32string、std::u16string を1文字ずつ表示する
  • gcj/19 - Mona OS developers Wiki

    gcj 19. UTF-8 † さすがにいつまでもLatin1(ISO 8859-1)決め打ち(→gcj/15)はまずい。そろそろUTF-8をサポートするか。 ↑ Unicode † Unicodeは時代別に変遷がある。(注:いい加減な説明) UCS-2(16bit) UCS-4(32bit) UTF-32(U+000000〜U+10FFFF) ← 今ここ ↑ UCS-2 † 当初のUnicodeの規格。 文字コードを16bit化することにより主要な文字コードで使われる文字をフラットなコードに押し込めようとしたもの。 必ずしも多言語環境を優先したものではない。CJK漢字統合もその方針の産物。 初期の実装では、内部処理がUnicodeで行われていても、表示できる文字はロカールに縛られていたりした。 ex. Visual Basic 4〜6 この時代に実装された処理系が現在主流になっている。

  • Unicode と UTF

    Unicode ってなに? 「よーするに Unicode ってなんなのさ!」ということでいろいろ調べてみたものをまとめてみました。で、頑張って調べてはみたのですが調べれば調べるほどイモヅル式に新しい情報が出てきてまとめきりませんでした。なので少々不完全です。いちおう「Unicode ってどんなものなのかな~」ってことが分かってもらえればと思います。 このコーナーでは、「45」のように二桁で区切られた文字を16進で表された1バイトの表現として扱います。このコーナーではこのような表現もビット列と呼ぶことにします。例えば「F0」という16進のバイト表現があれば「11110000」のようなビット列を思い浮かべてください。 コンピュータと文字 コンピュータが扱えるデータはそもそも「0」と「1」の2進数です。2進数は頑張れば10進数とか16進数とかになるので数値は使えます。ですが来、文字は扱え

  • JavaScriptで全角/半角判定 — shibu.jp

    Note コンテンツの一部は、業務時間内に調べた内容を含んでおり、株式会社ディー・エヌ・エーの提供でお送りしております。 とある理由で全角、半角の判定が必要になったのですが、簡単技(SJISなどに変換してバイト数計測など)はつかえなかったため、自作する方向で調べて見ました。 Pythonには unicodedata.east_asian_width() という関数があり、 エキスパートPythonプログラミング というすばらしい書籍の日語オリジナルの文字コード関連の章によると、この関数が "F" 、 "W" 、 "A" (ただし、Aはフォントにより変わる曖昧な文字)が返すと全角としてカウントすればよい、と書かれています。 こちらを参考にJavaScriptの全角/半角判定を行った幅計算を実装してみます。 まずJavaScriptを知る¶ JavaScriptは内部では、UTF-16とい

  • 1