DOBON.NETプログラミング道掲示板

■34552 / 1階層)  改行のコード
□投稿者/ 魔界の仮面弁士 大御所(1302回)-(2020/10/04(Sun) 12:58:15)
  • アイコンNo34546に返信(Vettyさんの記事)
    > この場合はどのように統一して保管すべきなのでしょうか?

    自分の場合、accdb に入れるか、生バイナリのまま保持しておくことが
    多いですが……テキスト形式での保存が必要な場合には

    {テキスト部の文字数(10進数)}{CRLF}{改行入りテキスト本体}{CRLF}

    のように、各テキストの先頭にデータサイズを埋め込んだりしています。

    テキストを手動で書き換える事もある場合は、サイズ埋め込みは面倒なので
    \r や \n で置き換えて単一行にすることもしばしばあります。
    この場合は \\ へのエスケープも必要ですね。


    改行パターンが事前に分からない場合、
    Cr/CrLf/Lf をすべて CrLf に正規化するために
     Dim rawString As String = …
     Dim fmtString As String = rawString.Replace(vbCrLf, vbLf).Replace(vbCr, vbLf).Replace(vbLf, vbCrLf)
    のようなコードを書くこともあります。


    > 0Ah だけ
    > 0Dh だけ
    > 0Dh 0Ah
    > のどれかにしてしまっていいものでしょうか?

    元のバイナリを維持する必要があるかどうか、だと思います。


    たとえば No34549 で紹介した EM_FMTLINES などは、
    [0Dh 0Dh 0Ah] と [0Dh 0Ah] を明確に区別しているため、
    これらの改行コードを統一化してしまうと、
    ソフト改行とハード改行を区別できなくなってしまいます。
    しかし、それを許容できるケースであるのならば問題無いでしょう。


    あるいは RFC1945 で定義された HTTP Header だと、
    長い行の折り返しのために、行末に LWS (Linear White Space) すなわち
    「CRLF(0Ah,0Dh) の後に、SP(20h) または HT(09h) が 1 つ以上続くトークン」
    を付与することになっています。

    この場合、出力側としては【CRLF を使うことが求められる】のですが、
    その一方で、入力側は CRLF の代わりに単独 CR や単独 LF が
    使われることも許容して処理するべきとされています。


    そのほか XML Parser の世界では、XML 1.0 勧告において、
    内部処理のために正規化した【LF のみに統一された文字列】として
    処理することになっています。

    なので、XML の解析処理を行った後は、CR や CRLF が
    LF に変換された出力される可能性が高いです。
    (未加工で出力してくる処理系もあります)
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←改行のコード /Vetty →Re[2]: 改行のコード /魔界の仮面弁士
 
上記関連ツリー

Nomalアイコン 改行のコード / Vetty (20/10/04(Sun) 06:24) #34546
Nomalアイコン Re[1]: 改行のコード / Azulean (20/10/04(Sun) 08:35) #34548
│└Nomalアイコン Re[2]: 改行のコード / 魔界の仮面弁士 (20/10/04(Sun) 12:29) #34549
Nomalアイコン 改行のコード / 魔界の仮面弁士 (20/10/04(Sun) 12:58) #34552 ←Now
  │└Nomalアイコン Re[3]: 改行のコード / Vetty (20/10/04(Sun) 12:53) #34550
  │  └Nomalアイコン Re[4]: 改行のコード / Vetty (20/10/04(Sun) 12:54) #34551 解決み!
  │    └Nomalアイコン Re[5]: 改行のコード / shu (20/10/20(Tue) 16:18) #34565 解決み!
  └Nomalアイコン Re[2]: 改行のコード / 魔界の仮面弁士 (20/10/04(Sun) 13:16) #34553

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -