HTML Entity

[HTML Entity]HTMLエンティティ

A001

Html Entities
エンティティ(実体参照)
前提
特定の用途でUTF16が使われることがあるがここでは考えないこととする
SJISエンコード コードポイントによる入力も考えないこととする

基本的にはHTMLエスケープの用途として利用される

ユニコード コードポイントからエンコードされることが基本
予約名記法&ZZZ;
10進数記法✏
16進数記法&#xZZZZ;がある

BMP内 とBMP外で桁数は違うが同じ記法で記述
BMP外の文字はUTF16の場合サロゲート対応になる
UTF16のサロゲート用セレクターはBMP内D8-DFに予約されている

バリエーションセレクタを利用した異体字表記がある
サロゲートペアを使用した表記がある
バリエーションを予約名で表記する場合もある
バリエーションもサロゲートも指定するフォントが対応している必要がある


スクリプト詰め合わせ

ダウンロード - htmlentities.zip



A002

|

[HTML Entity]予約名・呼称を使ったHTMLエンティティ



ダウンロード - html5ents.zip




AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004(*
005こちらの
006https://www.w3.org/2003/entities/
007XMLを利用して変換します
008https://www.w3.org/2003/entities/2007xml/html5ents.xml
009*)
010#com.cocolog-nifty.quicktimer.icefloe
011----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
012use AppleScript version "2.8"
013use framework "Foundation"
014use framework "UniformTypeIdentifiers"
015use framework "AppKit"
016use scripting additions
017property refMe : a reference to current application
018
019
020
021set strMes to ("日本語入力改行無しでなるべく短めが良い") as text
022
023########################
024## クリップボードの中身取り出し
025########################
026###初期化
027set appPasteboard to refMe's NSPasteboard's generalPasteboard()
028##格納されているタイプをリストにして
029set ocidPastBoardTypeArray to appPasteboard's types
030###テキストがあれば
031set boolContain to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text")
032if (boolContain as boolean) is true then
033  ###値を格納する
034  tell application "Finder"
035    set strReadString to (the clipboard as text) as text
036  end tell
037else
038  ###UTF8が無いなら
039  ##テキスト形式があるか?確認して
040  set boolContain to ocidPastBoardTypeArray's containsObject:(refMe's NSPasteboardTypeString)
041  ##テキスト形式があるなら
042  if (boolContain as boolean) is true then
043    set ocidTypeClassArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
044    ocidTypeClassArray's addObject:(refMe's NSString)
045    set ocidReadString to appPasteboard's readObjectsForClasses:(ocidTypeClassArray) options:(missing value)
046    set strReadString to ocidReadString as text
047  else
048    log "テキストなし"
049    set strReadString to strMes as text
050  end if
051end if
052
053##############################
054#####ダイアログ
055##############################
056set strName to (name of current application) as text
057if strName is "osascript" then
058  tell application "Finder" to activate
059else
060  tell current application to activate
061end if
062set aliasIconPath to POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ClippingUnknown.icns" as alias
063try
064  set recordResult to (display dialog strMes with title "入力してください" default answer strReadString buttons {"OK", "キャンセル"} default button "OK" with icon aliasIconPath giving up after 20 without hidden answer) as record
065on error
066  log "エラーしました"
067  return
068end try
069if "OK" is equal to (button returned of recordResult) then
070  set strReturnedText to (text returned of recordResult) as text
071else if (gave up of recordResult) is true then
072  return "時間切れです"
073else
074  return "キャンセル"
075end if
076
077##############################
078#####戻り値整形
079##############################
080set ocidResponseText to (refMe's NSString's stringWithString:(strReturnedText))
081###タブと改行を除去しておく
082set ocidTextM to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
083ocidTextM's appendString:(ocidResponseText)
084###除去する文字列リスト
085set listRemoveChar to {"\n", "\r", "\t"} as list
086##置換
087repeat with itemChar in listRemoveChar
088  set strPattern to itemChar as text
089  set strTemplate to ("") as text
090  set ocidOption to (refMe's NSRegularExpressionCaseInsensitive)
091  set listResponse to (refMe's NSRegularExpression's regularExpressionWithPattern:(strPattern) options:(ocidOption) |error| :(reference))
092  if (item 2 of listResponse) ≠ (missing value) then
093    log (item 2 of listResponse)'s localizedDescription() as text
094    return "正規表現パターンに誤りがあります"
095  else
096    set ocidRegex to (item 1 of listResponse)
097  end if
098  set numLength to ocidResponseText's |length|()
099  set ocidRange to refMe's NSRange's NSMakeRange(0, numLength)
100  set ocidResponseText to (ocidRegex's stringByReplacingMatchesInString:(ocidResponseText) options:0 range:(ocidRange) withTemplate:(strTemplate))
101end repeat
102##############################
103#####データ読み込み
104##############################
105set aliasPathToMe to (path to me) as alias
106set strPathToMe to (POSIX path of aliasPathToMe) as text
107set ocidPathToMeStr to refMe's NSString's stringWithString:(strPathToMe)
108set ocidPathToMe to ocidPathToMeStr's stringByStandardizingPath()
109set ocidContainerDirPath to ocidPathToMe's stringByDeletingLastPathComponent()
110set ocidDataDirPath to ocidContainerDirPath's stringByAppendingPathComponent:("Data")
111set ocidPlistFilePath to ocidDataDirPath's stringByAppendingPathComponent:("html5ents.plist")
112set ocidPlistFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidPlistFilePath) isDirectory:false)
113##
114set listResponse to refMe's NSDictionary's dictionaryWithContentsOfURL:(ocidPlistFilePathURL) |error| :(reference)
115set ocidReadDict to (item 1 of listResponse)
116#
117##############################
118#####処理部
119##############################
120#戻し用のテキスト
121set strReturnText to "" as text
122#整形済みの入力テキスト
123set strResponseText to ocidResponseText as «class utf8»
124#文字数数えて
125set numCntText to (count of every text item of strResponseText) as integer
126#文字数だけ繰り返し
127repeat with itemNo from 1 to numCntText by 1
128  #入力文字列からテキスト取り出して
129  set strItemText to (text item itemNo of strResponseText) as «class utf8»
130  set ocidItemDict to (ocidReadDict's objectForKey:(strItemText))
131  if ocidItemDict = (missing value) then
132    set strEncdedText to doGetHtmlEnt(strItemText)
133    set strReturnText to (strReturnText & strEncdedText) as «class utf8»
134  else
135    set strDictValue to (ocidItemDict's valueForKey:("entity")) as «class utf8»
136    if strDictValue starts with "&" then
137      #そのまま
138    else
139      set strDictValue to ("&" & strDictValue)
140    end if
141    if strDictValue ends with ";" then
142      #そのまま
143    else
144      set strDictValue to (strDictValue & ";")
145    end if
146    set strReturnText to (strReturnText & strDictValue) as «class utf8»
147  end if
148end repeat
149
150
151##############################
152#####ダイアログ
153##############################
154tell current application
155  set strName to name as text
156end tell
157####スクリプトメニューから実行したら
158if strName is "osascript" then
159  tell application "Finder"
160    activate
161  end tell
162else
163  tell current application
164    activate
165  end tell
166end if
167if strReturnText is "false" then
168  set strMes to (strReturnedText & "\n変換に失敗しました") as text
169  set strReturnText to ("失敗しました") as text
170else
171  set strMes to ("変換結果です\n" & strReturnText) as text
172end if
173try
174  set recordResult to (display dialog strMes with title "戻り値です" default answer strReturnText buttons {"クリップボードにコピー", "終了", "再実行"} default button "再実行" cancel button "終了" giving up after 20 with icon aliasIconPath without hidden answer) as record
175on error
176  return "エラーしました"
177end try
178if (gave up of recordResult) is true then
179  return "時間切れです"
180end if
181##############################
182#####自分自身を再実行
183##############################
184if button returned of recordResult is "再実行" then
185  tell application "Finder"
186    set aliasPathToMe to (path to me) as alias
187  end tell
188  run script aliasPathToMe with parameters "再実行"
189end if
190##############################
191#####値のコピー
192##############################
193if button returned of recordResult is "クリップボードにコピー" then
194  try
195    set strText to text returned of recordResult as text
196    ####ペーストボード宣言
197    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
198    set ocidText to (refMe's NSString's stringWithString:(strText))
199    appPasteboard's clearContents()
200    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
201  on error
202    tell application "Finder"
203      set the clipboard to strText as text
204    end tell
205  end try
206end if
207
208log "処理終了"
209return "処理終了"
210
211
212##############################
213#####HTML Entityサブ
214##############################
215to doGetHtmlEnt(argText)
216  set strSetValue to argText as Unicode text
217  set ocidItemStr to refMe's NSString's stringWithString:(strSetValue)
218  set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("\\") withString:("\\\\\\"))
219  set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("'") withString:("\\'"))
220  set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("\"") withString:("\\\""))
221  set strSetValue to ocidItemStr as Unicode text
222  
223  set strCommandText to ("function doGetCharUni() {let strText = '" & strSetValue & "';let listOutputArray = [];let listCharArray = Array.from(strText);for (let itemChar of listCharArray) {let numCodePoint = itemChar.codePointAt(0);let strUnicodeNo = numCodePoint.toString(16).toUpperCase();let strFormattedUnicodeNo = strUnicodeNo.padStart(4, '0'); strUnicodeNo = '&#x' + strFormattedUnicodeNo; listOutputArray.push(strUnicodeNo);}let strOutput = listOutputArray.join(';');return strOutput;} doGetCharUni();") as text
224  # log "\n" & strCommandText & "\n"
225  set strExecCommand to ("/usr/bin/osascript -l JavaScript -e \"" & strCommandText & "\"") as text
226  # log "\n" & strExecCommand & "\n"
227  try
228    set strResponse to (do shell script strExecCommand) as string
229  on error
230    log "osascript でエラーしました"
231    return false
232  end try
233  
234  if strResponse starts with "&#x" then
235    set strReturnText to (strResponse & ";") as string
236  else
237    set strReturnText to ("&#x" & strResponse & ";") as string
238  end if
239  
240  if strReturnText is " " then
241    set strReturnText to (" ") as text
242  end if
243  return strReturnText
244end doGetHtmlEnt
AppleScriptで生成しました

|

[HTML Entity]10進数HTMLエンティティ


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004(*
005HTML Entity
00610進数エンコードで作成します
007*)
008#com.cocolog-nifty.quicktimer.icefloe
009----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
010use AppleScript version "2.8"
011use framework "Foundation"
012use framework "UniformTypeIdentifiers"
013use framework "AppKit"
014use scripting additions
015property refMe : a reference to current application
016
017
018
019set strMes to ("通常文字列を入力してください\n&#形式のEntityに変換します\n変換結果は10進数になります") as text
020
021########################
022## クリップボードの中身取り出し
023########################
024###初期化
025set appPasteboard to refMe's NSPasteboard's generalPasteboard()
026##格納されているタイプをリストにして
027set ocidPastBoardTypeArray to appPasteboard's types
028###テキストがあれば
029set boolContain to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text")
030if (boolContain as boolean) is true then
031  ###値を格納する
032  tell application "Finder"
033    set strReadString to (the clipboard as text) as text
034  end tell
035else
036  ###UTF8が無いなら
037  ##テキスト形式があるか?確認して
038  set boolContain to ocidPastBoardTypeArray's containsObject:(refMe's NSPasteboardTypeString)
039  ##テキスト形式があるなら
040  if (boolContain as boolean) is true then
041    set ocidTypeClassArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
042    ocidTypeClassArray's addObject:(refMe's NSString)
043    set ocidReadString to appPasteboard's readObjectsForClasses:(ocidTypeClassArray) options:(missing value)
044    set strReadString to ocidReadString as text
045  else
046    log "テキストなし"
047    set strReadString to strMes as text
048  end if
049end if
050
051##############################
052#####ダイアログ
053##############################
054set strName to (name of current application) as text
055if strName is "osascript" then
056  tell application "Finder" to activate
057else
058  tell current application to activate
059end if
060set aliasIconPath to POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ClippingUnknown.icns" as alias
061try
062  set recordResult to (display dialog strMes with title "入力してください" default answer strReadString buttons {"OK", "キャンセル"} default button "OK" with icon aliasIconPath giving up after 20 without hidden answer) as record
063on error
064  log "エラーしました"
065  return
066end try
067if "OK" is equal to (button returned of recordResult) then
068  set strReturnedText to (text returned of recordResult) as text
069else if (gave up of recordResult) is true then
070  return "時間切れです"
071else
072  return "キャンセル"
073end if
074
075##############################
076#####戻り値整形
077##############################
078set ocidResponseText to (refMe's NSString's stringWithString:(strReturnedText))
079###タブと改行を除去しておく
080set ocidTextM to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
081ocidTextM's appendString:(ocidResponseText)
082###除去する文字列リスト
083set listRemoveChar to {"\n", "\r", "\t"} as list
084##置換
085repeat with itemChar in listRemoveChar
086  set strPattern to itemChar as text
087  set strTemplate to ("") as text
088  set ocidOption to (refMe's NSRegularExpressionCaseInsensitive)
089  set listResponse to (refMe's NSRegularExpression's regularExpressionWithPattern:(strPattern) options:(ocidOption) |error| :(reference))
090  if (item 2 of listResponse) ≠ (missing value) then
091    log (item 2 of listResponse)'s localizedDescription() as text
092    return "正規表現パターンに誤りがあります"
093  else
094    set ocidRegex to (item 1 of listResponse)
095  end if
096  set numLength to ocidResponseText's |length|()
097  set ocidRange to refMe's NSRange's NSMakeRange(0, numLength)
098  set ocidResponseText to (ocidRegex's stringByReplacingMatchesInString:(ocidResponseText) options:0 range:(ocidRange) withTemplate:(strTemplate))
099end repeat
100
101##############################
102#####処理部
103##############################
104set ocidItemStr to ocidResponseText's mutableCopy()
105set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("\\") withString:("\\\\\\"))
106set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("'") withString:("\\'"))
107set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("\"") withString:("\\\""))
108set strSetValue to ocidItemStr as Unicode text
109
110##コマンド実行
111set strCommandText to ("function doGetEncode(){let entities = Array.from(\"" & strSetValue & "\").map(char => {let codePoint = char.codePointAt(0);return codePoint;});return entities.join('');}doGetEncode();") as text
112log "\n" & strCommandText & "\n"
113set strExecCommand to ("/usr/bin/osascript -l JavaScript -e '" & strCommandText & "'") as text
114try
115  #コマンド実行
116  set strResponse to (do shell script strExecCommand) as text
117on error
118  log "osascript でエラーしました"
119  return false
120end try
121##テキスト形式に確定
122set strTextToEncode to strResponse as text
123##リストにして
124set strDelim to AppleScript's text item delimiters
125set AppleScript's text item delimiters to ","
126set listDecNo to every text item of strTextToEncode
127set AppleScript's text item delimiters to ""
128#出力用のテキスト
129set strTextToEncode to "" as text
130#文字の数だけ繰り返して
131repeat with itemDecNO in listDecNo
132  #整形する
133  set strTextToEncode to (strTextToEncode & "&#" & itemDecNO & ";") as text
134end repeat
135set strReturnText to strTextToEncode as text
136##############################
137#####ダイアログ
138##############################
139tell current application
140  set strName to name as text
141end tell
142####スクリプトメニューから実行したら
143if strName is "osascript" then
144  tell application "Finder"
145    activate
146  end tell
147else
148  tell current application
149    activate
150  end tell
151end if
152if strReturnText is "false" then
153  set strMes to (strReturnedText & "\n変換に失敗しました") as text
154  set strReturnText to ("失敗しました") as text
155else
156  set strMes to ("変換結果です\n" & strReturnText) as text
157end if
158try
159  set recordResult to (display dialog strMes with title "戻り値です" default answer strReturnText buttons {"クリップボードにコピー", "終了", "再実行"} default button "再実行" cancel button "終了" giving up after 20 with icon aliasIconPath without hidden answer) as record
160on error
161  return "エラーしました"
162end try
163if (gave up of recordResult) is true then
164  return "時間切れです"
165end if
166##############################
167#####自分自身を再実行
168##############################
169if button returned of recordResult is "再実行" then
170  tell application "Finder"
171    set aliasPathToMe to (path to me) as alias
172  end tell
173  run script aliasPathToMe with parameters "再実行"
174end if
175##############################
176#####値のコピー
177##############################
178if button returned of recordResult is "クリップボードにコピー" then
179  try
180    set strText to text returned of recordResult as text
181    ####ペーストボード宣言
182    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
183    set ocidText to (refMe's NSString's stringWithString:(strText))
184    appPasteboard's clearContents()
185    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
186  on error
187    tell application "Finder"
188      set the clipboard to strText as text
189    end tell
190  end try
191end if
192
193log "処理終了"
194return "処理終了"
AppleScriptで生成しました

|

[HTML Entity]16進数HTMLエンティティ


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# この形式は一般的に使われていないので理由がなければ使わない
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010property refMe : a reference to current application
011
012
013log doHTMLEntity("Aあ😀☯️🙇‍♂️🇯🇵") as text
014log doHTMLEntity("Aあ") as text
015log doHTMLEntity("あ") as text
016log doHTMLEntity("🙇‍♂️") as text
017log doHTMLEntity("?") as text
018log doHTMLEntity("@") as text
019log doHTMLEntity("#") as text
020log doHTMLEntity("%") as text
021log doHTMLEntity(" ") as text
022log doHTMLEntity("<") as text
023log doHTMLEntity(">") as text
024log doHTMLEntity("Á") as text
025log doHTMLEntity("~") as text
026
027##############################
028#####変換のサブルーチン  
029# UTF-16 の16新表記での Entity
030#一般的には使われない
031##############################
032to doHTMLEntity(argCharText)
033  set strCharText to argCharText as text
034  set ocidReadText to refMe's NSString's stringWithString:(strCharText)
035  set ocidEncodedText to (ocidReadText's stringByApplyingTransform:("Any-Hex/Java") |reverse|:false)
036  #置換して
037  set ocidReplacedStrings to (ocidEncodedText's stringByReplacingOccurrencesOfString:("\\u") withString:(";&#"))
038  #1文字目削除
039  set ocidRange to refMe's NSRange's NSMakeRange(0, 1)
040  ocidReplacedStrings's deleteCharactersInRange:(ocidRange)
041  #最後に追加
042  ocidReplacedStrings's appendString:(";")
043  return ocidReplacedStrings
044end doHTMLEntity
AppleScriptで生成しました

|

[HTML Entity]予約名を使ったHTMLエンティティ(いわゆるHTMLエスケープのみ処理)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#
006#com.cocolog-nifty.quicktimer.icefloe
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "AppKit"
011use scripting additions
012
013property refMe : a reference to current application
014
015################################
016##デフォルトクリップボードからテキスト取得
017################################
018set appPasteboard to refMe's NSPasteboard's generalPasteboard()
019set ocidTypeArray to appPasteboard's types()
020set boolContain to ocidTypeArray's containsObject:("public.utf8-plain-text")
021if boolContain = true then
022  try
023    set ocidPasteboardArray to appPasteboard's readObjectsForClasses:({refMe's NSString}) options:(missing value)
024    set ocidPasteboardStrings to ocidPasteboardArray's firstObject()
025  on error
026    set ocidStringData to appPasteboard's stringForType:("public.utf8-plain-text")
027    set ocidPasteboardStrings to (refMe's NSString's stringWithString:(ocidStringData))
028  end try
029else
030  set ocidPasteboardStrings to (refMe's NSString's stringWithString:(""))
031end if
032set strDefaultAnswer to ocidPasteboardStrings as text
033
034################################
035######ダイアログ
036################################
037#####ダイアログを前面に
038tell current application
039  set strName to name as text
040end tell
041####スクリプトメニューから実行したら
042if strName is "osascript" then
043  tell application "Finder" to activate
044else
045  tell current application to activate
046end if
047set aliasIconPath to (POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/BookmarkIcon.icns") as alias
048try
049  set strMes to ("通常のHTMLをHTML Entity形式に変換します") as text
050  
051  set recordResponse to (display dialog strMes with title "入力してください" default answer strDefaultAnswer buttons {"OK", "キャンセル"} default button "OK" cancel button "キャンセル" with icon aliasIconPath giving up after 20 without hidden answer)
052on error
053  log "エラーしました"
054  return "エラーしました"
055end try
056if true is equal to (gave up of recordResponse) then
057  return "時間切れですやりなおしてください"
058end if
059if "OK" is equal to (button returned of recordResponse) then
060  set strResponse to (text returned of recordResponse) as text
061else
062  log "キャンセルしました"
063  return "キャンセルしました"
064end if
065
066################################
067######本処理
068################################
069
070###置換レコード
071set recordEntityMap to { |<|:"&lt;", |>|:"&gt;", |"|:"&quot;", |'|:"&apos;", |=|:"&#x3D;", |+|:"&#x2B;"} as record
072#追加の置換レコードは自分で追加していけばいいのかな?と
073##  set recordEntityMap to {|&|:"&amp;",|<|:"&lt;", |>|:"&gt;", |"|:"&quot;", |'|:"&apos;", |=|:"&#x3D;", |+|:"&#x2B;", |©|:"&copy;", |®|:"&reg;", |™|:"&trade;", |€|:"&euro;", |£|:"&pound;", |¥|:"&yen;", |...|:"&hellip;"} as record
074###ディクショナリにして
075set ocidEntityMap to refMe's NSDictionary's alloc()'s initWithDictionary:(recordEntityMap)
076###キーの一覧を取り出します
077set ocidAllKeys to ocidEntityMap's allKeys()
078log ocidAllKeys as list
079##通常テキストの場合
080set strText to strResponse as text
081###選択中テキスト
082set ocidText to refMe's NSString's stringWithString:(strText)
083###可変テキストにして
084set ocidTextM to refMe's NSMutableString's alloc()'s initWithCapacity:0
085ocidTextM's setString:(ocidText)
086###&だけ先に処理しておく
087set ocidTextM to (ocidTextM's stringByReplacingOccurrencesOfString:("&") withString:("&amp;"))
088
089###取り出したキー一覧を順番に処理
090repeat with itemAllKey in ocidAllKeys
091  set strItemKey to itemAllKey as text
092  ##キーの値を取り出して
093  set strValue to (ocidEntityMap's valueForKey:(itemAllKey)) as text
094  ##置換
095  set ocidTextM to (ocidTextM's stringByReplacingOccurrencesOfString:(strItemKey) withString:(strValue))
096  ##次の変換に備える
097  set ocidTextM to ocidTextM
098end repeat
099
100set strEncodedText to ocidTextM as text
101
102################################
103######ダイアログ
104################################
105#####ダイアログを前面に
106tell current application
107  set strName to name as text
108end tell
109####スクリプトメニューから実行したら
110if strName is "osascript" then
111  tell application "Finder" to activate
112else
113  tell current application to activate
114end if
115set aliasIconPath to POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/AlertNoteIcon.icns"
116set strMes to ("戻り値です\r" & strEncodedText) as text
117
118set recordResult to (display dialog strMes with title "HTML Entity形式" default answer strEncodedText buttons {"クリップボードにコピー", "キャンセル", "OK"} default button "OK" cancel button "キャンセル" giving up after 20 with icon aliasIconPath without hidden answer)
119
120if button returned of recordResult is "クリップボードにコピー" then
121  try
122    set strText to text returned of recordResult as text
123    ####ペーストボード宣言
124    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
125    set ocidText to (refMe's NSString's stringWithString:(strText))
126    appPasteboard's clearContents()
127    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
128  on error
129    tell application "Finder"
130      set the clipboard to strText as text
131    end tell
132  end try
133end if
AppleScriptで生成しました

|

[HTML Entity]ユニコードコードポイントの16進数HTMLエンティティ(基本はこれ)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# サロゲートもバリエーションも対応しているのでjavascriptを使う
004#
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010property refMe : a reference to current application
011
012log doConvertEntityHex("Aあ😀☯️🙇‍♂️🇯🇵") as text
013log doConvertEntityHex("Aあ") as text
014log doConvertEntityHex("🙇‍♂️") as text
015log doConvertEntityHex("🙇‍♂️🙇‍♂️") as text
016log doConvertEntityHex("あ") as text
017log doConvertEntityHex("🇯🇵") as text
018
019##############################
020#####変換のサブルーチン  
021#  Unicodeリテラル HEX 16新数表記
022#16進数HTMLエンティティ
023# フォーマットは &#xZZZZZ;形式
024##############################
025to doConvertEntityHex(argText)
026  set strText to argText as Unicode text
027  set ocidItemStr to refMe's NSMutableString's stringWithString:(strText)
028  set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("\\") withString:("\\\\\\"))
029  set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("'") withString:("\\'"))
030  set ocidItemStr to (ocidItemStr's stringByReplacingOccurrencesOfString:("\"") withString:("\\\""))
031  set strSetValue to ocidItemStr as Unicode text
032  #コマンド整形
033  set strCommandText to ("function doGetCharUni() {let strText = '" & strSetValue & "';let listOutputArray = [];let listCharArray = Array.from(strText);for (let itemChar of listCharArray) {let numCodePoint = itemChar.codePointAt(0);let strUnicodeNo = numCodePoint.toString(16).toUpperCase();let strFormattedUnicodeNo = strUnicodeNo.padStart(4, '0'); strUnicodeNo = '&#x' + strFormattedUnicodeNo; listOutputArray.push(strUnicodeNo);}let strOutput = listOutputArray.join(';');return strOutput;} doGetCharUni();") as text
034  # log "\n" & strCommandText & "\n"
035  #コマンド実行
036  set strExecCommand to ("/usr/bin/osascript -l JavaScript -e \"" & strCommandText & "\"") as text
037  try
038    set strResponse to (do shell script strExecCommand) as string
039  on error
040    log "osascript でエラーしました"
041    return false
042  end try
043  #最後に追加
044  set strReturnText to (strResponse & ";") as string
045  return strReturnText
046end doConvertEntityHex
AppleScriptで生成しました

|

[HTML Entity]UTF-16の16進数HTMLエンティティ(一般的には使われない)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# この形式は一般的に使われていないので理由がなければ使わない
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010property refMe : a reference to current application
011
012
013log doEncode("Aあ😀☯️🙇‍♂️🇯🇵") as text
014log doEncode("Aあ") as text
015log doEncode("🙇‍♂️") as text
016log doEncode("🙇‍♂️🙇‍♂️") as text
017log doEncode("あ") as text
018log doEncode("🇯🇵") as text
019
020##############################
021#####変換のサブルーチン  
022# UTF-16 の16新表記での Entity
023#一般的には使われない
024##############################
025to doEncode(argCharText)
026  set strCharText to argCharText as text
027  set ocidReadText to refMe's NSString's stringWithString:(strCharText)
028  set ocidEncodedText to (ocidReadText's stringByApplyingTransform:("Any-Hex/Java") |reverse|:false)
029  #置換して
030  set ocidReplacedStrings to (ocidEncodedText's stringByReplacingOccurrencesOfString:("\\u") withString:(";&#"))
031  #1文字目削除
032  set ocidRange to refMe's NSRange's NSMakeRange(0, 1)
033  ocidReplacedStrings's deleteCharactersInRange:(ocidRange)
034  #最後に追加
035  ocidReplacedStrings's appendString:(";")
036  return ocidReplacedStrings
037end doEncode
AppleScriptで生成しました

|

[HTML Entity]10進数HTMLエンティティ


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010property refMe : a reference to current application
011
012log doConvertEntityDec("Aあ😀☯️🙇‍♂️🇯🇵") as text
013log doConvertEntityDec("Aあ") as text
014log doConvertEntityDec("🙇‍♂️") as text
015log doConvertEntityDec("🙇‍♂️🙇‍♂️") as text
016log doConvertEntityDec("あ") as text
017log doConvertEntityDec("🇯🇵") as text
018
019##############################
020#####変換のサブルーチン  
021#  Unicodeリテラル Dec10新数表記
022#10進数HTMLエンティティ
023# フォーマットは &#9999;形式
024##############################
025to doConvertEntityDec(argCharText)
026  ##テキスト受け取り
027  set strSetValue to argCharText as «class utf8»
028  ##コマンド作成
029  set strCommandText to ("function doGetEncode(){let entities = Array.from(\"" & strSetValue & "\").map(char => {let codePoint = char.codePointAt(0);return codePoint;});return entities.join('');}doGetEncode();") as text
030  log "\n" & strCommandText & "\n"
031  set strExecCommand to ("/usr/bin/osascript -l JavaScript -e '" & strCommandText & "'") as text
032  try
033    #コマンド実行
034    set strResponse to (do shell script strExecCommand) as text
035  on error
036    log "osascript でエラーしました"
037    return false
038  end try
039  ##テキスト形式に確定
040  set strTextToEncode to strResponse as text
041  #区切り文字でリストに
042  set strDelim to AppleScript's text item delimiters
043  set AppleScript's text item delimiters to ","
044  set listDecNo to every text item of strTextToEncode
045  set AppleScript's text item delimiters to strDelim
046  #戻し値の初期化
047  set strTextToEncode to "" as text
048  #リストの数だけ繰り返し
049  repeat with itemDecNO in listDecNo
050    # Entity形式に整形していく
051    set strTextToEncode to (strTextToEncode & "&#" & itemDecNO & ";") as text
052  end repeat
053  ###値を戻す
054  return strTextToEncode
055end doConvertEntityDec
AppleScriptで生成しました

|

[HTML Entity]UTF16hexサロゲートペア文字 上位下位エンコード判定


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# サロゲート判定
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use scripting additions
009property refMe : a reference to current application
010
011#入力文字列
012set strUniText to ("&#xD83C;&#xDDEF;&#xD83C;&#xDDF5;") as text
013
014#####################
015#デコード前判定用のリスト
016set listSurrogate to {"&#xD8", "&#xD9", "&#xDA", "&#xDB", "&#xDC", "&#xDD", "&#xDE", "&#xDF"} as list
017#判定用のリストをArrayに
018set ocidSurrogateArray to refMe's NSMutableArray's arrayWithArray:(listSurrogate)
019#入力テキストをNSStringに
020set strInputString to (refMe's NSString's stringWithString:(strUniText))
021#入力テキストをArrayに
022set ocidInputArray to strInputString's componentsSeparatedByString:(";")
023#入力テキスト分だけ繰り返し
024repeat with itemArray in ocidInputArray
025  if (itemArray as text) is "" then
026    exit repeat
027  end if
028  #最初の5文字を取り出して
029  set ocidRange to refMe's NSRange's NSMakeRange(0, 5)
030  set ocidPrefix to (itemArray's substringWithRange:(ocidRange))
031  #判定
032  set boolContain to (ocidSurrogateArray's containsObject:(ocidPrefix)) as boolean
033  if boolContain is true then
034    display alert "UTF16hexサロゲート上位下位の文字は処理できません"
035    return "UTF16hexサロゲート上位下位の文字は処理できません"
036  end if
037end repeat
038
039
040
041#####################
042#
043
044#文字数数えて
045set numCntTextItem to (count of every text item of strReturnText) as integer
046log numCntTextItem
047#順番に処理
048repeat with itemNo from 1 to numCntTextItem by 1
049  #順番に文字列を取り出して
050  set strTextItem to (text item itemNo of strUniText) as «class utf8»
051  log strTextItem as «class utf8»
052  #NSStringにして
053  set strInputString to (refMe's NSString's stringWithString:(strTextItem))
054  #lengthを取得
055  set numCntLength to strInputString's |length| as integer
056  log numCntLength as integer
057  #1より大きい数字はエラーで停止
058  if numCntLength > 1 then
059    display alert "サロゲートペアやバリエーションの文字は処理できません\n対象文字『" & strTextItem & "』"
060    return "サロゲートペアかバリエーションの文字は処理できません"
061  end if
062  
063end repeat
064
065
066
AppleScriptで生成しました

|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom