2006年03月03日

ライブラリのパス

 URLネタをもう1つ。 ライブラリのフォルダのパスについてです。
ドキュメントライブラリ、画像ライブラリ、フォームライブラリなどはフォルダが作成出来ますが、フォルダ階層を開いてアクセスした先の URL は凄く長くなっています。 これは、フォルダ階層部分をクエリーストリングのパラメータに展開されていることと、2バイト文字が含まれていると正規化 UTF-8 でエンコードされているからです。
2バイト文字1文字は正規化 UTF-8 でエンコードされると9文字になります。 (うげげ・・・)

・SharePoint Portal Server 2001 で、2 バイト文字コードを使用する場合の注意事項について
<http://www.microsoft.com/japan/sharepoint/server/support/dbcs.asp>
以前のバージョンに関する情報ですが、最初の方に、正規化 UTF-8 に関する説明があります。

ちょっと判り易い名前のフォルダ名階層を作ってしまうと簡単に URL が長くなります。 こんな時に、困るのはリストの「ハイパーリンクまたは画像」の列の文字列長制限です。
これを回避するアプローチとして、以下のようなものが考えられます。
  • URL内のパラメータの削除
    後ろの方に &View= が含まれている場合は、& 以降を削除する。 ビューを指定する必要が無い場合は削除しても問題無いです。
  • ドキュメントライブラリのフォルダ名を1バイト文字化
    単に2バイト文字の利用を止めるということです。 ちょっと安易ですが、確実な方法です。
  • 物理パスでアクセス
    ライブラリのフォルダは、実際には http://サーバー名/sites/サイトID/Shared%20Documents/フォルダ/サブフォルダ/ のような URL でもアクセス可能です。 この場合、クエリーストリングのパラメータではないので、漢字のままでも大丈夫です。
最後のアプローチが最も有効でしょうか・・・ 但し、URL を自分で展開しなくてはならないので、それがちょっと面倒です。

posted by kunitaka at 03:30| Comment(2) | TrackBack(0) | テクニック

ハイパーリンク列に設定出来る文字列の長さ

 リストに追加可能な列の情報の種類の中に「ハイパーリンクまたは画像」がありますが、この種類の列に設定可能な文字列長に関するメモです。
この種類の列には、URLと説明を設定出来ますが、「ハイパーリンクまたは画像」自体は「1 行テキスト」と同じようなので255文字までしか設定出来ません。 DBスキーマ上は、コンテンツDBの UserData テーブル (とんでもないスキーマです!) 内のデータ型が nvarchar の nvarchar シリーズのカラムに格納されるので、もっと長い文字列が出来ても良さそうですが・・・

ちなみに、URLの文字列が255文字を超えて設定出来る場合がありますが、これは、同じサーバーのURLの場合には、http://サーバー名 の部分が省略されて格納されるからのようです。
加えて、「ハイパーリンクまたは画像」の種類の列を追加すると、内部では nvarchar シリーズのカラムが2つ消費されます。 これは、URLと説明の内容をそれぞれ格納するからですね。 nvarchar シリーズのカラムは 1 から 64 まで定義されているので、「ハイパーリンクまたは画像」の種類の列は最大32個までしか定義出来ない訳です。
その他の、列の情報の種類毎の作成可能な数はこちらを参照して下さい。

・SharePoint サービス リストに新しい列を追加すると、「列制限を超えた」メッセージ
<http://support.microsoft.com/kb/823555/ja>
機械翻訳なので読み難いです。

posted by kunitaka at 02:53| Comment(0) | TrackBack(0) | メモ