I understand that for this type of operation should use the text object (maybe it even accepts file names with blank spaces?). However text seems to require semi-colons as separators for a list.
When you add entries into [text] line by line, [text] adds the semicolons for you.
I guess that open panel 2 returns a list with return as separators?
Don't guess -- examine the data!
But one key here is that a list in Pd is not "space delimited." When you print a list to the console, or put a list into [text], then the text representation of the list uses spaces in between list entries but the spaces don't exist internally. So when you say "maybe it even accepts file names with blank spaces" -- a symbol may contain a blank space, yes, this is not a problem. When Pd writes a symbol out to print or [text], the textual version tells the difference between a space within a symbol and a space between entries in a list by putting a backslash before the space inside the symbol.
If you see
the quick brown fox in a text box, it's a list with 4 symbols.
If you see
the\ quick\ brown\ fox in a text box, it's one symbol containing the whole phrase.
Openpanel should give you one symbol per filename, including special characters, encoded as normal strings. When you put it into a text object, it should encode for storage (escaping special characters), and when you retrieve from the text object, it should decode so you get the original strings out.
This is why I asked which special characters you're having trouble with. It's supposed to be handled for you.
How could I set this up with text object?
Easiest way is: If you get a list from openpanel, just dump the list into one line of [text]. The text window itself would just have one big long line but it "should" work.
For a more readable text window, list-drip and push the symbols in one by one.