• 締切済み

UTF-8をUTF-16に変換する方法

UTF-8をUTF-16に変換する方法に関してご教授ください できれば具体的な例を示して頂き、Javaでのサンプルなどを 示して頂けると幸いです。 その場合エンコーディング関連のライブラリは使用できません 自分が知りたいことは、 「どういった考えに基づいて変換を行えばいいか」 という変換規則のほうに重点を置いており、コードの解説そのものよりも 変換の考え方を説明頂ければと思います。 全くの素人ですが何卒よろしくお願いいたします。

みんなの回答

  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.1

>コードの解説そのものよりも変換の考え方 ということですが、コードの構造が分かっていれば変換の考え方は自明です。 Shift_JISなどと違ってビットをシフトするだけですので。 まずコードの構造はこちらをご覧ください。 http://ja.wikipedia.org/wiki/UTF-8#.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.89.E4.BD.93.E7.B3.BB 1バイト目の0が現れる位置で1文字のバイト数が決まります。 80,20,10…と順に&を取ってバイト数で場合分けすればよいでしょう。 バイト数が分かったらあとは適に&でマスクしてシフトして足すだけです。 エラー処理や非BMPの扱いは面倒なので省略します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • UTF-8とUTF-16について質問です。

    まず、【あ】という文字をUTF-16というエンコーディング方式で バイト配列化すると [0] => 66 [1] => 48 というバイト値が帰ってきます。 これはとりあえずC#で処理を行いました。 Encoding encode = Encoding.GetEncoding("UTF-16"); String value = "あ"; Byte [] byteData = encode.GetBytes(value); それでは【あ】という文字の文字集合のコードポイントは右記となります。【0x3042】 これは、出力された 66、48という数値を16進数に変換すると 66=>42 48=>30 となり、リトルエンディアン環境で 0x4230という16進数であらわされるようです。 この点も不思議なのですが今回知りたいのはUTF-16でエンコーディングされた バイト配列はこのように文字集合のコードポイントに復帰?させることができますよね? ではUTF-8でエンコーディングされた【あ】という文字の バイト配列 [0] => 227 [1] => 129 [2] => 130 というバイト配列を上記のような文字集合のコードポイントの値へ復帰させることは できるのでしょうか? それに伴いUTF-8でつかわれる文字集合もUTF-16と同じコードポイントなのでしょうか? 上記 1.UTF-8でエンコーディングされた文字列をバイト配列にした場合 元の文字集合に戻せるのか?戻せるならばその戻し方は? 2.UTF-8がさす文字集合とUTF-16がさす文字集合はおなじものですよね? 上記二点よろしくご教授ください。

  • EUCからUTF-8へのコード変換

    いつもお世話になっております。 C++でEUC-JPで書かれた文字列をUTF-8に変換するプログラムを作成したいのですが、変換ルーチン(TBL等)をどのように書けば良いか分かりません。 サンプル等があれば教えて頂けないでしょうか? 提供されているライブラリ等は使用しない(できない)予定ですのでお願いします。

  • UTF16のCSVファイルをUTF8に変更する方法

    仕事でUTF16のCSVファイルをUTF8に変換する必要があって調べています。 秀丸やフリーソフトなら可能なのですが、お客さんに極力操作させたくないので、バッチファイルで呼び出せたらいいと考えています。 JAVAを使った、UTF16で読み込んでUTF8で書き出すプログラムというのも思いついたのですが、処理速度が懸念材料です。 上記以外の方法で、文字コード変換を行う方法をご存知でしたら、教えてください。

  • UTF-8にマップできません???

    今、Atomを愛用しております。 チャンと日本語変換できているのに 後半のようなエラーが出るのはなぜでしょうか??? import java.applet.*; // Applet import java.awt.*; // Label, TextField, TextArea, Color, Button import java.awt.event.*; // ActionListener, ActionEvent import java.io.*; // InputStream, BufferedReader, InputStreamReader etc import java.net.*; // URL, Socket, UnknownHostException import java.util.*; // StringTokenizer //public class Chat extends Applet implements Runnable, ActionListener { // Runnable, ActionListenerインターフェース実装 Label TitleLabel; // タイトルラベル TextField InputField; // 入力フィールド Button SendButton; // 送信ボタン Button QuitButton; // 終了ボタン TextArea DisplayArea; // 表示エリア TextArea MemberArea; // メンバーエリア Thread thread; // スレッド Socket socket; // ソケット String Name = null; // 名前 //AudioClip Chime; // チャイム BufferedReader NetInput; // ネットワーク経由入力 PrintStream NetOutput; // ネットワーク経由出力 C:\JAVA>javac Chat.java Chat.java:9: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x93)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x81)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x81)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x8E)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0xC0)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x91)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:9: エラー: この文字(0x95)は、エンコーディングUTF-8にマップできません // Runnable, ActionListener?C???^?[?t?F?[?X???? ^ Chat.java:11: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x8B)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x89)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^ Chat.java:11: エラー: この文字(0x83)は、エンコーディングUTF-8にマップできません Label TitleLabel; // ?^?C?g?????x?? ^

    • ベストアンサー
    • Java
  • JPEGからBMPへの変換

    こんにちは、Makotoと申します。 JavaでJPEGからBMPへ変換を行おうと思っているのですが、 インターネットで調べてみると、JAIというSUNが出している 画像関連ライブラリの存在を知りました。早速ダウンロードしたのですが、 使用方法がいまいちよくわからずにいます。サンプルプログラムがあるような サイトを知っている人がいれば教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • javaでEUC-JP文字列→UTF-8への変換

    DB内にEUC-JPで保存されているデータを取得して、これをUTF-8文字列として扱いたいです。 phpでいうところの$string = mb_convert_encoding($string, "UTF-8", "EUC-JP"); をjavaで実現したいです。 どのように記述すれば変換できるのでしょうか? 検索しても、数十行もコードを書いて実現しているものばかりで、 シンプルな方法が見つかりません。 javaには難しい処理なのでしょうか…

  • nkfで全ファイルを変換する

    ネットで配布されているサンプルのJavaのソースコードが あるのですが、それが全部EUCではないので、EUCに 変換したいのです。 aというディレクトリの中に01から16、Rensyu というディレクトリがありその各々のディレクトリの 中に.javaとついたサンプルコードが入っています。 これをいっぺんに変換するのに nkf -e * > sample などとすると一つのファイルに全部変換後の ファイルがかかれてしまうので、 たとえばSampele1.javaだったらそれと同じ 名前のファイルに書き出すか、また Sample1_e.java というファイルに書き出したいです。 どうしたらいいでしょうか?おねがいします。

  • euc-jpからutf-8の文字コード変換について

    現在、何らかのhtmlを取得する際にはurf-8で統一しようと思っているのですが、 たとえば <?php $f=file_get_contents("http://blog.livedoor.jp/dqnplus/")//文字コードEUC-JP; $f = mb_convert_encoding($f,"utf-8","eucjp-win,utf-8,sjis-win,EUC-JP"); echo $f; ?> では、EUC-JPからの変換がうまくいきません。 ……というより、EUC-JPのエンコーディングのみ失敗してしまいます。 (文字化けしたもののみ抽出すると、すべてEUC-JPでした) どのようなコードを書けば、正常にエンコードできるでしょうか。 どなたかご教示のほど、どうかよろしくお願いいたします。

    • 締切済み
    • PHP
  • UTF-8に変換

    open( IN, "data.cgi" ); @f_data = <IN>; close( IN ); $i = '1'; open( OUT, ">log.cgi" ); select OUT; foreach( @f_data ){ if( $i > 10 ){ last; } ( $f_data1, $f_data2, $f_data3, $f_data4 ) = split( /<>/ ); $f_data1 =~ s/ //g; print "$f_data1階 $f_data4\n"; $i++; } #書き出し先ファイルを閉じる select STDOUT; close( OUT ); 上記スクリプトでlog.cgiに書き出される文字コードをUTF-8に変換したいのですが、いろいろな解説サイトの説明通りに行うと、私のやり方が間違っているだけだと思いますが、サーバエラーになっていまいます。サーバはxrea.comを利用しております。 data.cgiの文字コードはSJISです。 上記スクリプトの場合は、どのように変更すればよろしいのでしょうか?宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • J2MEでUTF8ソースコードでコンパイルエラーが発生する

    J2MEのWTK2.5.2のKToolbarを使って、携帯アプリの開発をやっているのですが、Javaソースコードを今までSJISで保存していたのを、UTF-8に変更したら、下記のようなコンパイルエラーが発生しました。 全て日本語文字を使っている所のようです。 JavaソースコードをUTF8で開発するには、どこの設定を変更しないと駄目なのでしょうか?   警告:この文字は、エンコーディング MS932 にマップできません。

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 雨の日にヘッドライトを使うと布バンドがすぐに伸びてしまうことはあるのか?
  • ゴムバンドはすぐに硬化して切れてしまうため、良いヘッドライトの固定方法は存在するのか?
  • また、布バンドを元に戻すための化学的な方法やゴムバンドの切れにくさを改善する化学品はあるのか?
回答を見る

専門家に質問してみよう