Programming/Linux

[PowerShell] ํŒŒ์›Œ์‰˜ ์›น ํฌ๋กค๋ง / ํŒŒ์›Œ์‰˜ ๋ณ€์ˆ˜ ํ•œ๊ธ€ ์ €์žฅ ๋ฌธ์ œ ํ•ด๊ฒฐ

Space_Jin 2022. 5. 10. 12:05
728x90
๋ฐ˜์‘ํ˜•

powershell web crawling / powershell variable uft8 encoding

์ตœ๊ทผ์— windows์˜ powershell์„ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ์ผ์ด ์žˆ์—ˆ๋‹ค.

์ž๋™์œผ๋กœ ์›น ํŽ˜์ด์ง€์— ํŠน์ • ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ํŠน์ • ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ํ”„๋กœ๊ทธ๋žจ์ธ๋ฐ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ์˜ ์‚ฌ์–‘์ƒ python ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋ถ€๋‹ด์Šค๋Ÿฝ๊ณ  ์›Œ๋‚™ ์งง๊ณ  ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•  ๊ฒƒ์ด๊ธฐ์— ์Šคํฌ๋ฆฝํŠธ๋กœ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋Œ€์ถฉ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

# power shell

# variable section
$KEY_WORD1="๊ฒ€์ƒ‰ํ•  ํ‚ค์›Œ๋“œ"
$KEY_WORD2="๊ฒ€์ƒ‰ํ•  ํ‚ค์›Œ๋“œ2"

$KEY_WORD1_URL="https://search.naver.com/search.naver?query=$KEY_WORD1"
$KEY_WORD2_URL="https://search.naver.com/search.naver?query=$KEY_WORD2"

$PROGRAM_NAME="iexplore"
$WAITTING_TIME=10  #sec
$LOOP_COUNT=2


For ($i=1; $i -le $LOOP_COUNT; $i++) {  # loop

    $ie=New-Object -COM 'InternetExplorer.Application'; # create ie application object
    $ie.visible=$true;  # show visual
    
    $ie.navigate("https://www.naver.com");
    $sText=$ie.Document.getElementByID("query");
    $sText.Value=$KEY_WORD1;
    
    while ($ie.Busy -eq $true) {Start-Sleep -seconds 1;}
    
    $sform=$ie.Document.getElementByID("sform");
    $sform.submit();
    
    $ie.navigate($KEY_WORD1_URL);   # open first tab
    $ie.navigate($KEY_WORD2_URL, 0x1000);   # create new tab   

    while ($ie.Busy -eq $true) {Start-Sleep -seconds 1;}

    get-Process iexplore | stop-Process;    # kill ie process

    sleep 1; # sleep after ie process
}

๊ฒ€์ƒ‰์ฐฝ์— ํŠน์ • ํ‚ค์›Œ๋“œ๋ฅผ ๋„ฃ์–ด์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

1. DOM(Document Object Model)์„ ์ง์ ‘ ์กฐ์ž‘ํ•ด ๊ฒ€์ƒ‰์ฐฝ์˜ value๋ฅผ ์ˆ˜์ •ํ•ด์„œ form ํƒœ๊ทธ ์ œ์ถœ(submit).

2. form์ด ์ œ์ถœ๋˜์—ˆ์„ ๋•Œ, ์ด๋™๋˜๋Š” url์˜ query์— ์›ํ•˜๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ๋„ฃ์€ url์„ ์ง์ ‘ ์š”์ฒญ.

 

์œ„ ์ฝ”๋“œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ๋ณธ ๊ฒƒ์ด๋‹ค.

 

1๋ฒˆ ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ, javascript์—์„œ DOM์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ ์‚ฌํ–ˆ๊ธฐ์— ์›น ํŽ˜์ด์ง€ ์ž‘์„ฑ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.forms.htmldocument?view=windowsdesktop-6.0 

 

HtmlDocument ํด๋ž˜์Šค (System.Windows.Forms)

WebBrowser ์ปจํŠธ๋กค์— ํ˜ธ์ŠคํŠธ๋œ HTML ๋ฌธ์„œ๋ฅผ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

docs.microsoft.com

์œ„ ๊ณต์‹๋ฌธ์„œ์— html ์†์„ฑ์— ๋”ฐ๋ผ์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์„œ๋“œ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

2๋ฒˆ ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ html์„ ์ž˜ ํ•ด์„ํ•ด์„œ ํ•„์š”ํ•œ query๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํŒ๋‹จํ•ด์•ผํ•œ๋‹ค.

powershell์˜ "navigate" ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ”๋กœ url์„ ์—ด ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค.

    $ie=New-Object -COM 'InternetExplorer.Application'; # create ie application object
    $ie.visible=$true;  # show visual
    
    $ie.navigate($KEY_WORD1_URL);   # open first tab
    $ie.navigate($KEY_WORD2_URL, 0x1000);   # create new tab

๋ณ€์ˆ˜ $ie์—๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์ธ internet exlporer๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ๊ฐ€ ๊ตฌํ˜•์ด๋ผ์„œ ie ๋ธŒ๋ผ์šฐ์ €๋งŒ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ...

 

visible์„ ๋‚ด์žฅ ๋ณ€์ˆ˜์ธ $true๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ฆด ๋•Œ ์‹œ๊ฐํ™”ํ•ด์ค€๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด (flase) url์„ ์š”์ฒญํ•˜๊ธด ํ•˜์ง€๋งŒ ๋ˆˆ์— ๋ณด์ด์ง€๋Š” ์•Š๋Š”๋‹ค.

 

navigate ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ผœ์ ธ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ ํƒญ์„ ์—ด์–ด์„œ url์„ ์š”์ฒญํ•œ๋‹ค.

๋งŒ์•ฝ ๊ธฐ์กด ํƒญ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผœ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

Start-Process "์›ํ•˜๋Š” url"		# default browser process ์‹คํ–‰
[system.Diagnostics.Process]::Start("chrome","์›ํ•˜๋Š” url")  # ์ƒˆ chrome์—์„œ url ์—ด๊ธฐ

๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์—์„œ url์„ ์š”์ฒญํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

PowerShell ํ•œ๊ธ€ ๋ณ€์ˆ˜ ์˜ค๋ฅ˜

# variable section
$KEY_WORD1="๊ฒ€์ƒ‰ํ•  ํ‚ค์›Œ๋“œ"
$KEY_WORD2="๊ฒ€์ƒ‰ํ•  ํ‚ค์›Œ๋“œ2"

ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ํ•œ๊ธ€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ธ์ฝ”๋”ฉ์ด ๊นจ์ง€๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋„ค์ด๋ฒ„ ๊ฒ€์ƒ‰์ฐฝ์— $KEY_WORD1์ด๋ผ๋Š” ๋ณ€์ˆ˜์— "์•ˆ๋…•ํ•˜์„ธ์š”" ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ๋„ค์ด๋ฒ„ ๊ฒ€์ƒ‰์ฐฝ์— ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์ž…ํ•˜๊ฒŒ ํ–ˆ์„ ๋•Œ "?๋›๋ทํ“ˆํˆด?ํ‰ฌ์ค˜?"์ฒ˜๋Ÿผ ๋˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, windows์— ์ €์žฅ๋œ powershell ํŒŒ์ผ(. ps1 ํŒŒ์ผ)์˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ "uft8(bom)"์œผ๋กœ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ.

 

ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ mac ํ™˜๊ฒฝ์—์„œ ์ž‘์„ฑํ–ˆ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ windows์—์„œ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์˜€์—ˆ๋‹ค.

 

๋ถ„๋ช… utf8 ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ์ž˜ ์ €์žฅํ–ˆ๋Š”๋ฐ ์™œ ์•ˆ ๋˜๋Š” ๊ฑฐ์ง€?๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ์Šคํƒ ์˜ค๋ฒ„ ํ”Œ๋กœ์šฐ๋ฅผ ์ˆฑํ•˜๊ฒŒ ๋’ค์กŒ์ง€๋งŒ ๋ช…ํ™•ํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆœ ์—†์—ˆ๋‹ค. ๋‚˜์™€ ๋น„์Šทํ•œ ์งˆ๋ฌธ์ด ๋ช‡ ๊ฐœ ์žˆ์—ˆ์ง€๋งŒ ์ •ํ™•ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์—†์—ˆ์—ˆ๋‹ค.

 

์ผ๋‹จ ์ด ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด BOM(Byte Order Mark)์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผ ํ•˜๋Š”๋ฐ, ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์ด ์–ด๋– ํ•œ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Œ๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ผ ๊ฐ€์žฅ ์•ž๋ถ€๋ถ„์— "๋งค์ง๋„˜๋ฒ„"๋ผ๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ปดํ“จํ„ฐ๋Š” ํ•ด๋‹น ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ, ๋จผ์ € ๋งค์ง๋„˜๋ฒ„๋ฅผ ์ฝ์–ด ๋“ค์—ฌ uft8์ธ์ง€ utf16์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„ํ‚ค๋ฐฑ๊ณผ๋ฅผ ์ฐธ๊ณ ...

https://ko.wikipedia.org/wiki/%EB%B0%94%EC%9D%B4%ED%8A%B8_%EC%88%9C%EC%84%9C_%ED%91%9C%EC%8B%9D

 

๋ฐ”์ดํŠธ ์ˆœ์„œ ํ‘œ์‹ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

๋ฐ”์ดํŠธ ์ˆœ์„œ ํ‘œ์‹œ(Byte Order Mark, BOM)๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž U+FEFF byte order mark๋กœ, ๋งค์ง ๋„˜๋ฒ„๋กœ์„œ ๋ฌธ์„œ์˜ ๊ฐ€์žฅ ์•ž์— ์ถ”๊ฐ€ํ•˜์—ฌ ํ…์ŠคํŠธ๋ฅผ ์ฝ๋Š” ํ”„๋กœ๊ทธ๋žจ์— ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.[1] 16๋น„ํŠธ ํ˜น์€ 32๋น„ํŠธ

ko.wikipedia.org

์ตœ๊ทผ์—๋Š” utf8์˜ ๊ฒฝ์šฐ ์ด ๋งค์ง๋„˜๋ฒ„๋ฅผ ์ƒ๊ฐํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‚ด๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ ํ™˜๊ฒฝ์— mac์ด์—ˆ๊ธฐ์— ์ด BOM์€ ์ƒ๋žต๋œ ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ, windows์˜ ๋ช‡๋ช‡ ํ”„๋กœ๊ทธ๋žจ์ด ์•„์ง ์ด BOM์„ ์ƒ๋žตํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ txt ํŒŒ์ผ์ธ๋ฐ powershell script ํŒŒ์ผ์ธ ps1ํŒŒ์ผ๋„ ์‚ฌ์‹ค์ƒ txt์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์ •ํ™•ํžˆ ์•Œ๊ธฐ ์œ„ํ•ด์„œ BOM์ด ํ•„์š”ํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ๋‹จ์ˆœํžˆ utf8์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ utf8 with bom ๋ฐฉ์‹์ธ uft8(bom)์œผ๋กœ ์ €์žฅํ•ด ์ฃผ์–ด์•ผ ํ–ˆ๋‹ค.

 

ํ˜น์‹œ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ์— ์ €์žฅ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํžˆ ์†Œ๊ฐœํ•˜์ž๋ฉด

ํŒŒ์ผ ์™ผ์ชฝ ์ƒ๋‹จ "ํŒŒ์ผ -> ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ -> ๋งจ ์•„๋ž˜ ์ธ์ฝ”๋”ฉ ํƒญ ํด๋ฆญ -> uft8(bom) ์„ ํƒ -> ์ €์žฅ" ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.

 

์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋ง ํ•˜์—ฌ ์•Œ์•„๋ƒˆ๋˜ ๋ฐฉ๋ฒ•๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์•˜๋‹ค.

[System.Text.Encoding]::UTF8;
$env:LC_ALL='C.UTF-8';

๋‚ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ์• ์ดˆ์— ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์ด ํ•ด๊ฒฐ์ด ๋˜์ง€๋Š” ์•Š์•˜๋‹ค... ์ด๋ฏธ UTF8 ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ–ˆ์ง€๋งŒ, BOM์ด ์—†์–ด์„œ ์ƒ๊ฒผ๋˜ ๋ฌธ์ œ์˜€๊ธฐ์—...

 

ํ•˜์ง€๋งŒ ๊ทธ์ค‘์— ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ ๋ฐ”๋กœ uft8๋กœ ์ธ์ฝ”๋”ฉ ๋˜์–ด์žˆ๋Š” text๋ฅผ ์ฝ์–ด์„œ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด ๋ฌธ์ œ์—†์ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

$KEY_WORD1=get-content -encoding utf8 "var1.txt";   
$KEY_WORD2=get-content -encoding utf8 "var2.txt";

์Šคํฌ๋ฆฝํŠธ์™€ ๋™์ผํ•œ ํด๋”์— "var1.txt"๋ผ๋Š” ํŒŒ์ผ์— ๋ณ€์ˆ˜์— ์ €์žฅํ•  ๋ฌธ์ž์—ด์„ ๊ธฐ์ž…ํ•ด ๋†“์œผ๋ฉด ์ธ์ฝ”๋”ฉ์ด ๊นจ์ง€์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜์— ์ž˜ ์ €์žฅ๋œ๋‹ค.

๋ฌผ๋ก , var1.txt ํŒŒ์ผ๋„ utf8 ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. with BOM ๋ฐฉ์‹์ด ์•„๋‹˜์—๋„ ํ•ด๋‹น ๊ฒฝ์šฐ๋Š” ์ž˜ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์€ windows ์ž์ฒด๊ฐ€ txt ํŒŒ์ผ์„ uft8๋กœ ์ €์žฅํ•  ๋•Œ BOM์„ ํฌํ•จ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ ๋ฌธ์ด์—ˆ์ง€๋งŒ, ์ฒ˜์Œ์œผ๋กœ powershell๋„ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์—๋Ÿฌ๋„ ๊ฒช์–ด๋ณด๋ฉด์„œ windows์™€ mac์˜ ์ฐจ์ด, utf8 ์ธ์ฝ”๋”ฉ๊ณผ BOM์— ๋Œ€ํ•ด์„œ ์กฐ๊ธˆ ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ์‹œ๊ฐ„์ด ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

 

์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ์œ„์™€ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ๋ชปํ•œ ์ธ๋„ ์นœ๊ตฌ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ๋‹ค์‹œ ๊ทธ ์งˆ๋ฌธ์„ ์ฐพ๊ฒŒ ๋œ๋‹ค๋ฉด ๋‹ต๋ณ€ํ•ด์ฃผ๋Š” ๊ฑธ๋กœ...

728x90
๋ฐ˜์‘ํ˜•