• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:75オクテットごとに改行を入れる方法)

75オクテットごとに改行を入れる方法とは?

このQ&Aのポイント
  • 質問者は、iCalendarのデータを吐き出すプログラムを作成している。長い項目に関して、75オクテットごとに改行(CRLF)と半角スペースを挿入する方法がわからないという問題がある。文字コードはUTF-8で、全角・半角文字が混在している。また、データ中に を含む場合は、それが途中で切断されないようにする方法も知りたい。
  • iCalendarのデータを吐き出すプログラムを作成中の質問者は、長い項目についての処理に困っている。具体的には、75オクテットごとに改行と半角スペースを挿入する方法がわからず、UTF-8での文字コードや全角・半角文字の扱いにも苦労している。また、データ中に含まれる改行文字( )が途中で切れないような処理方法も知りたい。
  • iCalendarデータの出力プログラムを作成している質問者は、長い項目の処理について困っている。具体的には、75オクテットごとに改行と半角スペースを挿入する方法がわからないという問題があり、UTF-8の文字コードも扱っているため、全角・半角文字の区別も難しい。さらに、改行文字( )が途中で切れないような処理方法も知りたい。

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

  • ベストアンサー
回答No.1

1オクテット = 1バイトと考えます。 UTF-8では日本語の全角半角1文字は3から4バイトですが、OK? > なお、データ中に\nを含む場合は、それがぶった切られないようにする方法はないでしょうか? ??よくわからず。 適当。以下、表示がくずれるので空白2文字を全角空白1文字で書いていることに注意。 use strict; use warnings; # for testing my $wrap = 5; my $string1 = 'A' x 10; my $string2 = 'B' x 13; for my $string ( $string1, $string2 ) {   print qq(\x0A\x0D"$string"\x0A\x0D);   print "---\x0A\x0D";   while ( $string =~ m/([\x00-\xFF]{$wrap,$wrap})/g ) {     print $1, "\x0A\x0D ";   }   my $rest = length($string) % $wrap;   if ( $rest > 0 ) {     print substr( $string, -$rest ), "\x0A\x0D ";   }   print "---\x0A\x0D"; }

lgh09mm
質問者

補足

説明不足でした。 my $a = "あいうえおかきくけこさしすせそたちつてのなにぬね\\nのはひふへほ"; というデータに対して、printした際に、出力結果として ……なにぬね\  nの…  ではなく、 ……なにぬね  \nの…… と\nが分断されないように出力したいという意味でした。 ただ、解決策が見えてきたような気がします。ありがとうございました。

関連するQ&A